OpenSSL学习笔记

103 阅读1分钟

常用加密算法

  • 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端可以存一个根证书,然后验证客户端的证书。

Ref: help.aliyun.com/zh/api-gate…