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

 前提

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=3650
export 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.csr
openssl 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/ -p
ln -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.pem
cat signed.crt intermediate.pem > chained.pem
wget -O - https://letsencrypt.org/certs/isrgrootx1.pem > root.pem
cat 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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值