linux · 2022-11-30 0

生成ssl证书,nginx配置https

一、证书格式

常用证书格式:JKS(.keystore),微软(.pfx),OPSSL之PEM(.key + .crt),其中tomcat使用JKS格式,nginx使用PEM格式

二、openssl生成ssl证书

x509证书一般会用到三类文,key,csr,crt

  • key 是私用密钥,通常是rsa算法。
  • csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。
  • crt是CA认证后的证书文,签署人用自己的key给你签署的凭证。

1.key 的生成

生成有密码的key:

openssl genrsa -des3 -out server.key 2048

这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。

生成没有密码的key:

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

2.csr 的生成

openssl req -new -key server.key -out server.csr

有一个common name,可以写你域名

3.CA 的 crt 的生成

openssl req -new -x509 -key server.key -out ca.crt -days 3650

生成的 ca.crt 文件是用来签署下面的 server.csr 文件

4.crt 的生成

csr 文件必须有 CA 的签名才可形成证书

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

5.证书合并

cat server.key server.crt > server.pem

6.nginx 配置 https

server {
    listen       443 ssl;
    listen  [::]:443 ssl;
    server_name  www.example.com;

    ssl on;
    ssl_certificate /root/openssl/server.crt;            # 证书所在的位置
    ssl_certificate_key /root/openssl/server.key;   # key所在的位置

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

server {
    listen       80;
    listen  [::]:80;
    server_name  www.example.com;
    rewrite ^ https://$http_host$request_uri? permanent;
}