生成私钥(key文件)

openssl genrsa -des3 -out server.pass.key 2048

参数说明

-genra    生成RSA私钥
-des3 des3算法
-out server.key 生成的私钥文件名
-2048 私钥长度

去除私钥中的密码

openssl rsa -in server.pass.key -out server.key

生成CSR(证书签名请求)

生成自签名SSL证书

openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Shanghai/L=Shanghai/O=cetc/OU=cetc/CN=gitlab.cetc.cn"

参数说明

-req 生成证书签名请求
-new 新生成
-key 私钥文件
-out 生成的CSR文件
-subj 生成CSR证书的参数

生成公钥

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

参数

-days 证书有效期

X.509证书包含三个文件:key,csr,crt。

key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名

crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有的公钥,以及签署者的签名等信息

备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

nginx 配置示例

server {
       listen 8081 http2 ssl;
       # 监听ipv6
       listen [::]:8081;
       ssl on;
       ssl_certificate /home/pi/httpkey/server.crt;
       ssl_certificate_key /home/pi/httpkey/server.key;
       ssl_session_timeout 5m;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
       #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
       ssl_ciphers ECDHE-RSA-AES256-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
       ssl_prefer_server_ciphers on;
       location / {
          proxy_redirect off;      
          proxy_set_header Host $host; 
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header   X-Forwarded-Host $server_name;
          proxy_read_timeout  1200s;
          client_max_body_size 0;
          proxy_set_header Connection "upgrade";
          proxy_pass http://127.0.0.1:18081;
       }
     }