我想用自签证书来做SSL加密。
我用了下面的方案:
# 创建存放证书的目录
mkdir /usr/local/ssl
cd /usr/local/ssl
# 创建服务器私钥,命令会让你输入一个口令。
openssl genrsa -des3 -out server.key 1024
# 再生成一个不带密码的私钥
# openssl rsa -in server.key -out server-nopassword.key
# 创建签名请求的证书(CSR)
openssl req -new -key server.key -out server.csr
#生成秘钥
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# 再生成一个不带密码的私钥
# openssl x509 -req -days 365 -in server.csr -signkey server-nopassword.key -out server-nopassword.crt
原文链接:https://blog.csdn.net/cxy35/article/details/106277053
nginx配置:
...
server {
listen 443 ssl;
listen 8000;
ssl_certificate /usr/local/ssl/server-nopassword.crt;
ssl_certificate_key /usr/local/ssl/server-nopassword.key;
#...
}
...
然后nginx配置用不带密码的server-nopassword.crt
和server-nopassword.key
文件,访问https是可以的。
但是,我把配置文件的证书和key改成带密码的,即server.crt
和server.key
以后就不能访问了:
...
server {
listen 443 ssl;
listen 8000;
ssl_certificate /usr/local/ssl/server.crt; #修改为带密码的
ssl_certificate_key /usr/local/ssl/server.key; #
#...
}
...
另外,如果访问没有https的8000端口,服务器是有响应的。
我把服务端的crt证书安装到chrome的信任证书中,但也没有反应。
这个问题应该怎么解决呢?
openssl自签证书方案太繁琐了,强烈推荐mkcert,特别省事。我以前写过文章: https://blog.dteam.top/posts/...