GZ

对痛苦的思考才是财富


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 搜索

使用cert-manager签发免费证书

发表于 2021-02-07 | 分类于 kubernetes

参考

  • https://cloud.tencent.com/document/product/457/49368#dns-01-.E6.A0.A1.E9.AA.8C.E6.96.B9.E5.BC.8F.E7.AD.BE.E5.8F.91.E8.AF.81.E4.B9.A6
  • https://cert-manager.io/docs/
  • https://artifacthub.io/packages/helm/jetstack/cert-manager/1.1.0
  • https://xuchao918.github.io/2019/03/14/%E4%BD%BF%E7%94%A8cert-manager%E5%AE%9E%E7%8E%B0Ingress-https/
  • https://github.com/topics/cert-manager-webhook

概述

随着 HTTPS 不断普及,大多数网站开始由 HTTP 升级到 HTTPS。使用 HTTPS 需要向权威机构申请证书,并且需要付出一定的成本,如果需求数量多,则开支也相对增加。cert-manager 是 Kubernetes 上的全能证书管理工具,支持利用 cert-manager 基于 ACME 协议与 Let’s Encrypt 签发免费证书并为证书自动续期,实现永久免费使用证书。

阅读全文 »

python3之requests模块

发表于 2021-01-21 | 分类于 python

介绍

Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。
特性:

  • Keep-Alive & 连接池
  • 国际化域名和 URL
  • 带持久 Cookie 的会话
  • 浏览器式的 SSL 认证
  • 自动内容解码
  • 基本/摘要式的身份认证
  • 优雅的 key/value Cookie
  • 自动解压
  • Unicode 响应体
  • HTTP(S) 代理支持
  • 文件分块上传
  • 流下载
  • 连接超时
  • 分块请求
  • 支持 .netrc
阅读全文 »

Javascript实现Base64、Hex、Bytes、String之间的互相转换

发表于 2021-01-20 | 分类于 javascript

参考

  • https://www.jb51.net/article/95352.htm
  • https://blog.csdn.net/weixin_42420703/article/details/81384901

    介绍

    为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情 况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码应运而生,Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法。
    所谓Base64,就是选出64个字符作为一个基本字符集(A-Z,a-z,0-9,+,/,再加上作为垫字的”=”,实际是65个字符),其它所有符号都转换成这个字符集中的字符。
    • 第一步,将每三个字节作为一组,一共是24个二进制位。
    • 第二步,将这24个二进制位分为四组,每个组有6个二进制位。
    • 第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节。
    • 第四步,根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。
阅读全文 »

python多线程和多进程

发表于 2020-12-24 | 分类于 python

概念

  • 进程是操作系统分配资源的最小单元, 线程是操作系统调度的最小单元。
  • 一个应用程序至少包括1个进程,而1个进程包括1个或多个线程,线程的尺度更小。
  • 每个进程在执行过程中拥有独立的内存单元,而一个进程的多个线程在执行过程中共享内存。
    阅读全文 »

python3之os,shutil模块

发表于 2020-12-23 | 分类于 python

Python的os和shutil模块封装了常见的文件和目录操作如copy,cd,mv,rm以及解压等等操作。
直接看用法
首先import

1
import os, shutil
阅读全文 »

python3-base64加密

发表于 2020-12-23 | 分类于 python

在python3中base64模块中的参数是字节流,不是字符串,所以python3 base64加密字符串有两种写法

普通字符串编解码

编码

方法一:字符串切割

1
2
3
4
5
6
7
8
9
10
>>> import base64
>>> a = 'string'
>>> encrypt = base64.b64encode(a.encode('utf-8'))
>>> encrypt
b'c3RyaW5n'
>>> b = str(encrypt)
>>> b
"b'c3RyaW5n'"
>>> print(b[2:-1])
c3RyaW5n

方法二:直接转换操作

1
2
3
4
5
6
7
8
9
>>> import base64
>>> a = 'testzifuchuan'
>>> d = base64.b64encode(a.encode('utf-8'))
>>> d
b'dGVzdHppZnVjaHVhbg=='
>>> d.decode('utf-8')
'dGVzdHppZnVjaHVhbg=='
>>> str(d,'utf-8')
'dGVzdHppZnVjaHVhbg=='
阅读全文 »

keytool常用命令

发表于 2020-09-29 | 分类于 证书

keyStore和truststore区别

我们自己的应用中通常所说的keystore或者truststore主要是针对于应用本身的需求来的。
keystore和truststore从其文件格式来看其实是一个东西,只是为了方便管理将其分开
keystore中一般保存的是我们的私钥,用来加解密或者为别人做签名
enter description here
truststore中保存的是一些可信任的证书,主要是java在代码中访问某个https的时候对被访问者进行认证的,以确保其实可信任的。truststore是必须的,如果我们没有显式的指定,那么java会默认指定为$JAVA_HOME/lib/security/cacerts 这个文件。
如果要指定的话,可以在java的参数中进行指定

1
2
3
4
-Djavax.net.ssl.keyStore=clientKeys   
-Djavax.net.ssl.keyStorePassword=password
-Djavax.net.ssl.trustStore=clientTrust
-Djavax.net.ssl.trustStorePassword=password

keystore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。

truststore是放信任的证书的一个store。

truststore和keystore的性质是一样的,都是存放key的一个仓库,区别在于,truststore里存放的是只包含公钥的数字证书,代表了可以信任的证书,而keystore是包含私钥的。

阅读全文 »

Nginx之多级证书的双向认证

发表于 2020-07-02 | 分类于 nginx

1 准备

请参考我之前的博客准备好三级证书

2 Nginx配置文件

将生成的证书,组成证书链(三级证书链,从上至下顺序,最上面为第三级证书)

server-chain.pem

rootca->secondca->server

client-chain.pem:

rootca->clientca

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
ssl on;
ssl_certificate /etc/nginx/ssl/server-chain.pem;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_verify_client on;
ssl_client_certificate /etc/nginx/ssl/client-chain.pem;
ssl_verify_depth 5;
server_name test.com;
listen 443 default_server deferred;

error_log /var/log/nginx/ssl_auth_error.log debug;
access_log /var/log/nginx/ssl_auth_access.log;

location / {
#proxy_pass http://test;
}
}

因为要使用双向认证,所以需要生成客户端证书,因为客户端证书链是由rootca和clientca组成,所以客户端证书可以由这两个证书中的任意一个去生成。

这里我们用clientca去生成了一个device的证书,分别是device.pem和device.key

阅读全文 »

Nginx之SSL配置项解析

发表于 2020-07-02 | 分类于 nginx

常见参数

  • ssl_certificate 证书其实是个公钥,它会被发送到连接服务器的每个客户端
  • ssl_certificate_key 私钥是用来解密的,所以它的权限要得到保护但nginx的主进程能够读取。
  • ssl_session_timeout 客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m即30分钟甚至4h。
  • ssl_session_cache shared:SSL:10m; : 设置ssl/tls会话缓存的类型和大小。
    • shared 所有工作进程之间共享缓存。缓存大小以字节为单位指定;一兆字节可以存储大约4000个session。每个共享缓存都应该有一个任意名称。具有相同名称的缓存可以用于多个虚拟服务器。
    • off 严禁使用session缓存:nginx明确告诉客户端session可能不会被重用。
    • none session缓存的使用被禁止:nginx告诉客户端session可能会被重用,但实际上并不会将session参数存储在缓存中。
    • builtin 在OpenSSL中构建的缓存;仅由一个工作进程使用。缓存大小在session中指定。如果没有给出大小,则等于20480个会话。使用内置高速缓存可能导致内存碎片。
    • 注意: builtin和shared可以同时使用,但是Nginx官方说只使用shared缓存,而不使用built-in缓存的性能应该会更高。配置案例:
      ssl_session_cache builtin:1000 shared:SSL:10m;
  • 设置较长的keepalive_timeout也可以减少请求ssl会话协商的开销,但同时得考虑线程的并发数了。
  • ssl_protocols指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
  • ssl_ciphers选择加密套件,不同的浏览器所支持的套件(和顺序)可能会不同。这里指定的是OpenSSL库能够识别的写法,你可以通过 openssl -v cipher ‘RC4:HIGH:!aNULL:!MD5’(后面是你所指定的套件加密算法) 来看所支持算法。
    • 加密套件 之间用冒号分隔,加密套件 前有感叹号的表示必须废弃。
  • ssl_prefer_server_ciphers on设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
阅读全文 »

openssl生成多级证书

发表于 2020-07-02 | 分类于 openssl

[TOC]

参考

  • https://blog.csdn.net/u010129119/article/details/53419581
  • https://www.jianshu.com/p/7d940d7a07d9

环境

Centos7.6

初始化

1
2
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
阅读全文 »
12…10
弓昭

弓昭

弓昭的个人主页,主要涉及网络、运维、前端、Python等等知识

100 日志
30 分类
83 标签
RSS
GitHub csdn 简书
Links
  • 网络之路
  • 阿里云中间件
© 2018 - 2021 弓昭
本站访客数:
博客全站共299.7k字