自签名 https 证书生成并配置 nginx

390 阅读2分钟

1 安装openssl

# macos 安装
brew install openssl
# centos 安装
yum install openssl openssl-devel

2 创建自签名的SSL证书和私钥

生成私钥(key文件)

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

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

# 输入一个4位以上的密码。

2.1 去除私钥中的密码

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

2.2 生成CSR(证书签名请求)

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

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

subj参数说明如下:

字段字段含义示例
/C=Country 国家CN
/ST=State or Province 省Shanghai
/L=Location or City 城市Shanghai
/O=Organization 组织或企业cetc
/OU=Organization Unit 部门wlst
/CN=Common Name 域名或IPwlst.com

2.3 生成自签名SSL证书

# -days 证书有效期
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

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

  • key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
  • csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
  • crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有的公钥,以及签署者的签名等信息 备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

image.png

3 nginx 配置 ssl 证书

3.1 复制证书文件至 nginx 配置文件根目录

把上面步骤生成的 server.crt 和 server.key 文件复制至 nginx 配置文件根目录下

image.png

3.2 配置 ssl 证书

在 nginx.conf 配置文件进行配置


    server {
        listen 443 ssl;
        server_name  snake.com;
        ssl_certificate      server.crt;
        ssl_certificate_key  server.key;
        ssl_protocols TLSv1.2;
        location / {
            proxy_pass   http://127.0.0.1:21001/;
        }  
    }

image.png

3.3 本地hosts配置代理域名解析(本地测试)

image.png

3.4 重启 nginx

nginx -t
nginx -s reload

3.5 浏览器访问测试

image.png