生成ssl证书

108 阅读1分钟

开发过程中可能会碰到必须配置SSL正式的场景,去买个证书呢不现实。那就只能自己生成一个了,虽然不被浏览器认可,但是,反正都是自己用,也无所谓了

shell脚本如下:

#!/usr/bin/env bash
set -e

# 交互输入域名 或 ip
read -p "Please input domain or ip: " domain
if [ -z "${domain}" ];then
    echo "未输入域名或ip,已退出!"
    exit
fi


mkdir -p /workspace/ssl
cd /workspace/ssl

# 生成私钥,参数genrsa:生成RSA私钥;-des3:des3算法;-out server.pass.key:生成的私钥文件名;2048:私钥长度
openssl genrsa -des3 -out ${domain}.pass.key 2048

# 去除私钥中的密码
openssl rsa -in ${domain}.pass.key -out ${domain}.key

# 生成CSR(证书签名请求文件)
openssl req -new -key ${domain}.key -out ${domain}.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=${domain}"

# 生成自签名的SSL证书 -days:证书有限期(天)
openssl x509 -req -days 1825 -in ${domain}.csr -signkey ${domain}.key -out ${domain}.crt 

生成证书运行 sh generate_ssl.sh 然后输入域名或ip、然后输入三次密码(密码随便输入,比如111111)就可以了

Windows机器使用 Git Bash 运行shell脚本

使用Git Bash 运行时需要改变脚本如下,原因在附录[1]

#!/usr/bin/env bash
set -e

# 交互输入域名 或 ip
read -p "Please input domain or ip: " domain
if [ -z "${domain}" ];then
    echo "未输入域名或ip,已退出!"
    exit
fi


mkdir -p /workspace/ssl
cd /workspace/ssl

# 生成私钥,参数genrsa:生成RSA私钥;-des3:des3算法;-out server.pass.key:生成的私钥文件名;2048:私钥长度
openssl genrsa -des3 -out ${domain}.pass.key 2048

# 去除私钥中的密码
openssl rsa -in ${domain}.pass.key -out ${domain}.key

# 生成CSR(证书签名请求文件)
### Windows Git Bash 运行下面这就命令会报错
# openssl req -new -key ${domain}.key -out ${domain}.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=${domain}"
openssl req -new -key ${domain}.key -out ${domain}.csr

# 生成自签名的SSL证书 -days:证书有限期(天)
openssl x509 -req -days 1825 -in ${domain}.csr -signkey ${domain}.key -out ${domain}.crt 

输入域名或ip image.png

输入第一次密码 image.png

输入第二次密码 image.png

输入第三次密码 image.png

输入组织等信息,直接回车就行 image.png

证书文件如下,证书位置请看附录[2]image.png

在nginx中使用

nginx配置

server {

    listen      8443;

    ssl          on;

    ssl_certificate /home/testzq/server.crt;      #配置已签名的SSL证书.crt

    ssl_certificate_key /home/testzq/server.key;  #配置已签名的证书私钥.key

    .............................................

server {

    listen      443;

    ssl          on;

    ssl_certificate /home/testzq/server.crt;

    ssl_certificate_key /home/testzq/server.key;

附录:

[1]Windows环境使用 Git Bash 运行会报错如下:

image.png

[2]Windows环境下 Git Bash 根目录位置:

image.png

image.png

image.png