开发过程中可能会碰到必须配置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
输入第一次密码
输入第二次密码
输入第三次密码
输入组织等信息,直接回车就行
证书文件如下,证书位置请看附录[2]:
在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;