生成测试环境自签名ssl证书

生成测试环境自签名ssl证书

一、openssh生成

1.生成 CA

生成 CA 私钥(ca.key),如下步骤都会涉及输入密码

1
openssl genrsa -des3 -out ca.key 2048

生成 CA 证书签名请求(ca.csr)

1
openssl req -new -key ca.key -out ca.csr

生成自签名 CA 证书(ca.cert)

1
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt
2.修改openss配置

修改 openssl.cnf,将如下这三个由 match 改为 optional

1
2
3
4
5
vim /etc/pki/tls/openssl.cnf
[ policy_match ]
countryName = optional
stateOrProvinceName = optional
organizationName = optional

缺少 private 文件夹,创建 /etc/pki/CA/private

1
mkdir /etc/pki/CA/private

缺少 CA 私钥,生成对应 cakey.pem

1
openssl genrsa 1024 > /etc/pki/CA/private/cakey.pem

缺少 newcerts 文件夹,创建 /etc/pki/CA/newcerts

1
mkdir /etc/pki/CA/newcerts

缺少索引文件,创建 /etc/pki/CA/index.txt

1
touch /etc/pki/CA/index.txt

缺少序列化文件,创建 /etc/pki/CA/serial

1
echo 01 > /etc/pki/CA/serial
3.生成服务端证书

生成服务端证书,有一个确定是否生成证书这一步骤,连着输入两个 y 即可

1
2
3
4
5
6
# 生成服务端私钥(server.key)
$ openssl genrsa -out server.key 2048
# 生成服务端证书签名请求(server.csr)
$ openssl req -new -key server.key -out server.csr
# 使用ca证书签署服务端csr以生成服务端证书(server.cert)
$ openssl ca -days 3650 -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
4.nginx中配置ssl证书
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/cert/server.crt;
ssl_certificate_key /usr/local/nginx/cert/server.key;
ssl_session_timeout 5m;
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}

二、mkcert生成

1.下载mkcert

下载地址:https://github.com/FiloSottile/mkcert/tags

在cmd终端输入 echo %PROCESSOR_ARCHITECTURE% 查看电脑是arm还是amd架构下载对应的版本

将mkcert单独放在一个文件夹,在终端中打开该文件夹

2.安装

在执行该命令时会弹出一个安全警告窗口,然后选择是

1
mkcert-v1.4.4-windows-amd64.exe -install
3.查看CA证书存放位置
1
mkcert-v1.4.4-windows-amd64.exe -CAROOT
4.打开windows的证书控制台

按住键盘的,“Win键+R键”调出运行框,输入certmgr.msc命令。打开证书控制台

5.生成自签证书,可供局域网内使用其他主机访问

生成 localhost+3-key.pem localhost+3.pem 两个证书

1
mkcert-v1.4.4-windows-amd64.exe localhost 127.0.0.1 ::1 192.168.1.1 (192.168.1.1 这个IP改成服务器ip,还可以添加域名)
6.在nginx中配置ssl证书
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 4433 ssl; # 改一下端口号,如果使用默认的端口号,可能会造成端口号冲突,导致nginx启动失败
server_name localhost; # 这里可以根据自己的需要填,我这里直接使用localhost了

ssl_certificate localhost+3-key.pem; # 这个就是证书的存放路径了,这里可以写绝对路径,也可以使用相对路径
ssl_certificate_key localhost+3.pem; # 这个就是证书的存放路径了,这里可以写绝对路径,也可以使用相对路径

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
root html;
index index.html index.htm;
}
}

访问 https://localhost:4433/ 即可