常用加密算法
- AES 对称加密
- RSA 非对称加密
对称加密
加密
touch plain.txt
echo "Hello World!" > plain.txt
openssl enc -aes-256-cbc -in plain.txt -out encrypted.bin
解密
openssl enc -aes-256-cbc -d -in encrypted.bin -pass pass:123123
非对称加密
生成密钥
openssl genrsa -out key.pem 1024 # private key
openssl rsa -in key.pem -pubout -out pub-key.pem # publick key
加密
openssl rsautl -encrypt -inkey pub-key.pem -pubin -in plain.txt -out EncryptedData.encrypted
解密
openssl rsautl -decrypt -inkey key.pem -in EncryptedData.encrypted -out DecryptedData.txt
注意公钥加密,私钥解密,不可以私钥加密。
生成证书
产生CSR请求(Certificate Signing Request)
openssl req -new -newkey rsa:2048 -nodes -keyout your_domain.key -out your_domain.csr
- your_domain.key 是一个private key(这里使用明文的形式),也可以不新建,使用已经存在的。
- your_domain.csr 是实际的输出 phoenixnap.com/kb/generate…
- 将此文件发给CA机构,即可获得相应的证书
产生证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out xx.pem -days 365 -nodes
www.digitalocean.com/community/t…
配置证书
在nignx启用证书
server {
listen 443 ssl;
server_name 1.1.1.1;
ssl_certificate /home/s/ssl/ready_test/1.crt;
ssl_certificate_key /home/s/ssl/ready_test/1.key;
}
配置client证书(双向,optional)
需要生成全新的证书,并转成P12的格式,在windows中导入,下面是nginx server上需要做的配置。
ssl_client_certificate /home/gy/clientkey/client.crt;
ssl_verify_client on;
- 在windows client安装的时候需要安装到个人的store,而不是机器的store.
- 具体的位置选择可以让系统自动选择(系统会选择到personal).
- Reference:tinychen.com/20210304-ng…
- 客户端证书加密的内容为选择的cipher_suite(原来为明文发送), server端可以存一个根证书,然后验证客户端的证书。