Nginx 自签证书配置排坑

OpenSSL生成证书

1. 创建 server.key 文件---- 服务端秘钥
// 私钥key生成 使用OpenSSL工具的genrsa生成私钥文件用于加密和解密数据
// 命令生成一个 1024位的秘钥 可以改成2048 ,同时有一个des3方法加密的密码
openssl genrsa -des3 -out server.key 1024
//免输入密码可以改成
open ssl genrsa -out server.pem 2048
// server.key 或 server.pem 都可
2. 创建 server.csr 文件
// 生成一个新的文件cert.csr 交给CA签名后形成服务端自己的证书
openssl req -new -key private.key -out server.csr -config /usr/local/openssl-1.1.1m/ssl/openssl.cnf
//客户端同样操作
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config /xxx/openssl.cnf
3. 创建 ca.crt 和 ca.key 文件
 
openssl req -new -x509 -keyout ca.key -out ca.crt -config /usr/local/openssl-1.1.1m/ssl/openssl.cnf
//自己颁发证书
open ssl req -new -x509 -key private.pem -out cacert.pem -days 1095
// private.pem + cacert.pem 组合

//CSR文件需要CA的签名才能形成证书
//生成CA
openssl req -new -x509 -keyout ca.key -out ca.crt -config /xxx/openssl.cnf
4. 创建 server.crt 文件
//服务器证书crt
//生成ca证书 
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config /usr/local/openssl-1.1.1m/ssl/openssl.cnf

//用生成的CA证书为刚才生成的server.csr,client.csr文件签名
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openss.cnf

//如果报错: I am unable to access the ./demoCA/newcerts directory
// ./demoCA/newcerts: No such file or directory
// 当前操作目录 新建demoCA\newcerts文件夹
// demoCA文件夹下新建一个空的index.txt文件
// 再新建一个serial文件 写入需要 01

5. 创建免密key文件
openssl rsa -in private.key -out server.key.unsecure

检查证书的私钥和证书是否匹配

openssl x509 -noout -modulus -in ssl.crt | openssl md5
(stdin)= 8216eeaa8e1a346dd1f5dfecaadfec1d
openssl rsa -noout -modulus -in ssl.key | openssl md5
(stdin)= 8216eeaa8e1a346dd1f5dfecaadfec1d

nginx添加配置

// nginx重启问题  nginx -s reload 只加载配置文件
// 需要 nginx -s stop 
// nginx  来启动后才能开通新添加端口号

server { 
	listen  443  ssl;
	server_name 10.10.5.101;
	ssl_certificate "/app/nginx/ssl/ca.crt";
	ssl_certificate_key "/app/nginx/ssl/ca.key";
        ssl_session_timeout  5m;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:DH:EDH:!EXP:+MEDIUM;
        ssl_prefer_server_ciphers   on;
        index index.htm index.html login.jsp index.jsp;
        location / {
                add_header         'Access-Control-Allow-Origin' '*'; 
                add_header     'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH, OPTIONS';
                add_header         "Access-Control-Allow-Credentials" "true";
                add_header         "Access-Control-Allow-Headers" "x-requested-with,content-type";
                proxy_pass         http://10.10.5.101:9356;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                access_log  /app/logs/nginx/access_https.log  main;
        }
   }

posted @ 2024-12-17 15:52  若云  阅读(97)  评论(0)    收藏  举报