自己生成nginx的https证书

#自己生成ssl证书
这里说下Linux 系统怎么通过openssl命令生成 证书。

首先执行如下命令生成一个key
openssl genrsa -des3 -out ssl.key 1024
然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。
由于生成时候必须输入密码。你可以输入后再删掉。
mv ssl.key xxx.key
openssl rsa -in xxx.key -out ssl.key
rm xxx.key

然后根据这个key文件生成证书请求文件
openssl req -new -key ssl.key -out ssl.csr
以上命令生成时候要填很多东西 一个个看着写吧(可以随便,毕竟这是自己生成的证书)

最后根据这2个文件生成crt证书文件
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
这里365是证书有效期 推荐3650哈哈。这个大家随意。最后使用到的文件是key和crt文件。

如果需要用pfx 可以用以下命令生成
openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx



在需要使用证书的nginx配置文件的server节点里加入以下配置就可以了。
ssl on;
ssl_certificate /home/ssl.crt;
ssl_certificate_key /home/ssl.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
然后重启nginx就大功告成了

server {
    listen 80;
    listen 443 ssl;
    #server_name example.com;

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

    ssl on;
    ssl_certificate /root/for_nginx/ssl.crt;
    ssl_certificate_key /root/for_nginx/ssl.key;
}

注: [1] 




#一键生成证书脚本

#!/bin/bash

openssl genrsa -des3 -passout pass:123456 -out ssl.key 2048

mv ssl.key xxx.key
openssl rsa -in xxx.key -passin pass:123456 -out ssl.key
rm xxx.key

openssl req -new -key ssl.key -out ssl.csr -subj "/CN=RootCA/C=CN/ST=Hunan/L=ChangSha/O=MyCompanName/OU=IT"

openssl x509 -req -days 3650 -in ssl.csr -signkey ssl.key -out ssl.crt


### rename the file

NOW_DATE=`date "+%Y%m%d%H%M%S"`

if [ x$1 != x ]; then
    #Have args
    NEW_FILE_NAME=$1
else
    #Not have args
    NEW_FILE_NAME=$NOW_DATE
fi


echo $NEW_FILE_NAME

mv ssl.crt $NEW_FILE_NAME.crt
mv ssl.csr $NEW_FILE_NAME.csr
mv ssl.key $NEW_FILE_NAME.key

文/dream_bccb

来源:https://www.cnblogs.com/dream-bccb/p/5373302.html


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。