一、openssl
openssl1.0.1g以上
二、自建CA,用CA证书进行签名,创建服务器证书
1.使用CA.sh创建CA跟证书
首先,修改openssl的配置文件:修改default_bits=1024为default_bits=2048,使其openssl加密使用2048位。sudo vim /usr/local/ssl/openssl.cnf (mac:/System/Library/OpenSSL)
然后,创建一个目录,并且将生成CA证书的脚本CA.sh复制到这个目录:
mkdir ca cd ca cp /usr/local/ssl/misc/CA.sh CA.sh
CA.sh这个脚本如果找不到,可以使用 openssl version -a查看openssl对应的目录,而CA.sh一般就在这个目录的子目录misc目录下。之后,执行:CA.sh会使用/usr/local/ssl/openssl.cnf中的配置来创建私钥和证书,创建CA证书过程中,不输入信息,直接回车,填写加密私钥的密码和生成CA证书的相关信息。创建完之后会生成demoCA目录。这个目录有:./CA.sh -newca
cacert.pem certs index.txt index.txt.old private careq.pem crl index.txt.attr newcerts serial
其中cacert.pem是CA的证书,private存放CA的私钥,newcerts存放CA签名的备份。到这里,CA已经建好了,下面通过CA来对证书进行签名。
2.使用CA跟证书为服务器证书签名
三、将证书配置与Nginx服务器#生成私钥 sudo openssl genrsa -des3 -out private.key 2048 #生成证书请求 sudo openssl req -new -key private.key -out server.csr #生成服务器的私钥,去除密钥口令 sudo openssl rsa -in private.key -out server.key #使用CA进行签名,生成server.crt cp server.csr newreq.pem ./CA.sh -sign mv newcert.pem server.crt 或者上面三步都不需要,直接使用下面一步 openssl ca -in server.csr -out server.crt
所需要的三个文件server.crt, server.key, ca.crt,其中ca.crt用户客户端使用,server.crt和server.key部署于Nginx服务器。
将server.crt server.key拷贝到/etc/nginx中,然后在/etc/nginx/conf.d中添加服务器配置my.conf:
server { listen 80; server_name 120.24.89.159; return 301 https://$server_name$request_uri; } server { # This is not an error. HTTPs termination happens at LB so # this is just another server listen 443; server_name 120.24.89.159; ssl on; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 50M; } location /static { alias /app/zoomapp/app/static; } }