内网一键生成 LetsEncrypt HTTPS证书 - 3 - 生成证书

来源:互联网 发布:投资组合优化模型 编辑:程序博客网 时间:2024/06/09 20:50

 前提

ssl脚本执行目录:/root/ssl/
www目录: /root/www/challenges , python -m SimpleHTTPServer 80
sendemail放置地方:/root/ssl/sendemail

HTTP服务器准备

如果胆儿大,直接执行如下的内容即可

#!/bin/bash# filepath: /root/ssl/a.sh# 清场ls | grep -v a.sh | grep -v sendemail | grep -v tar.gz | xargs -i rm -f {}which openssl || (echo "没有找到openssl,开始安装"; yum install -y openssl)# 创建一个目录mkdir /root/ssl && echo "创建临时目录成功!" || (echo "创建临时目录失败";exit)# 创建一个RSA私钥openssl genrsa 4096 > account.key && echo "创建RSA私钥成功!" || (echo "创建RSA私钥失败!";exit)# 创建另一个RSA私钥openssl genrsa 4096 > domain.key && echo "创建另外一个私钥成功!" || (echo "创建另外一个RSA私钥失败!";exit)#创建ECC私钥openssl ecparam -genkey -name secp256r1 | openssl ec -out domain.key && echo "创建ECC私钥成功!" || (echo "创建ECC私钥失败!";exit)openssl ecparam -genkey -name secp384r1 | openssl ec -out domain.key && echo "创建ECC私钥成功!" || (echo "创建ECC私钥失败!";exit)#生成CSR文件,有两种方式,我用的是第二种,但是第一种可以一次多申请几个,可以稍后测试# In how many days should certificates expire?export KEY_EXPIRE=3650export KEY_COUNTRY="CN"export KEY_PROVINCE="SD"export KEY_CITY="JN"export KEY_ORG="IIOT"export KEY_EMAIL="zzlyzq@gmail.com"export KEY_OU="CloudPlatform"#openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:yoursite.com,DNS:www.yoursite.com")) > domain.csropenssl req -new -sha256 -key domain.key -out domain.csr# 配置验证服务,为啥要这么说呢,因为letsencrypt给的也是DV,也就是域名验证,我们运行软件申请的时候,本身python脚本会在本地写一个随机数到一个随机文件,它们官方会从远端经过公网DNS解析并去获取这个文件,如果一致,就说明这个站点是我们的,也就可以申请证书了。[ -d "~/www/challenges" ] || mkdir -p ~/www/challenges/# 另外,还需要两个步骤,最后会说明为啥要这两个步骤。mkdir /root/www/challenges/.well-known/ -pln -s /root/www/challenges/ /root/www/challenges/.well-known/acme-challenge# 接下来我们就要下载python脚本,并去申请证书了wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py# 在执行下面之前,我们可以打开网站,最简单的就是使用python#nohup python -m SimpleHTTPServer 80&python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir ~/www/challenges/ > ./signed.crt# 如果一切正常,我们会看到signed.crt这个就是我们的证书了。# 另外,我们还需要letsencrypt的中间证书,我也不知道啥意思,反正是需要一个官网的东西wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pemcat signed.crt intermediate.pem > chained.pemwget -O - https://letsencrypt.org/certs/isrgrootx1.pem > root.pemcat intermediate.pem root.pem > full_chained.pem# 打包发送tar czvf crt.tar.gz chained.pem domain.key./sendemail -f 123@vip.126.com -t 123@iiot.ac.cn -s smtp.vip.126.com -u "证书快递" -xu 123 -xp 123 -m "证书For域名:XX生成成功" -a crt.tar.gz -o message-charset=utf-8

生成的时候会要求输入一些东西,比如国家,省会,城市,公司名称,common name最重要,这个就是域名哦。
生成完成后,会自动打包发送邮件。

0 0