#?生成密钥,采用的是des3算法
openssl?genrsa?-des3?-out?server.key?2048
#?根据密钥签发申请文件CSR
openssl?req?-new?-key?server.key?-out?server.csr
#这一步主要是去除密钥的密码,便于后续部署
openssl?rsa?-in?server.key?-out?server.key?
#生成自签名根证书并设置证书的有效期,crt是发给客户端的证书
openssl?x509?-req?-days?3650?-in?server.csr?-signkey?server.key??-out?server.crt
#有的需要pem的证书,对证书做的转换
openssl?x509?-in?server.crt?-out?server.pem?-outform?PEM?
参数说明:
req: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.
-nodes: 告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。
-days 36500: 证书有效期,100年
-newkey rsa: 2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)
-keyout: SSL输出文件名
-out: 证书生成文件名
server {
listen 8080 ssl; #端口增加SSL支持
server_name _;
charset utf-8;
# ssl on;
ssl_certificate /data/app/nginx/nginx/cert/server.crt;# 证书文件
ssl_certificate_key /data/app/nginx/nginx/cert/server.key; #私钥文件
# access_log ./logs/access_stream.log main;
# error_log ./logs/error_stream.log;
location / {
root /home/nginx/knowledge2.0/;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
ext.in
extendedKeyUsage = serverAuth, clientAuth
basicConstraints = CA:FALSE
keyUsage = nonRepudiation,digitalSignature,keyEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1=172.1.0.1
DNS.1=www.test.com
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt -extfile ext.ini
然后重新使用Openssl重新生成证书,然后导出crt证书,在windows下加入到信任的根证书下面,再次访问浏览器,浏览器访问不会报错,上述配置说明该证书是IP或者域名所有的。
安装证书参考:JDK制作自签名证书,实现双向认证,解决谷歌浏览器证书无效问题,亲测有效_keytool生成自签名证书浏览器不信任怎么办-CSDN博客
其他参考:
内网nginx配置SSL_nginx 内网 ssl-CSDN博客
SpringBoot项目配置https访问单项认证谷歌有效证书_springboot写双向认证客户端认证-CSDN博客