注册HTTPS证书
- 1. 从ACME获取脚本文件
- 2. 运行shell脚本
- 3. 安装socat
- 4. 把acme.sh这个脚本添加到环境变量
- 软连接
- 直接添加到.bashrc
- 5. 注册ACME账户
- 6. 注册证书
- 6.1. 首先把80端口打开
- 6.2. 申请证书
- 7. 部署到Flask上
1. 从ACME获取脚本文件
wget https://get.acme.sh
mv index.html acme.sh
chmod 777 acme.sh
上述三行命令就不多解释了
2. 运行shell脚本
可以看到已经安装成功了
但是我们应该注意到有三行红字,我们按照要求安装socat
3. 安装socat
apt install socat
4. 把acme.sh这个脚本添加到环境变量
- 这个操作主要是为了方便操作,如果不觉得麻烦也可以省略
软连接
ls
ls -s ./acme.sh /usr/local/bin/
直接添加到.bashrc
vim ~/.bashrc
然后添加下面的路径,注意修改自己正确的路径
export PATH="$PATH:/your/additional/path"
5. 注册ACME账户
acms.sh --register-account -m youremail@xxmail.com
6. 注册证书
6.1. 首先把80端口打开
ufw allow 80
6.2. 申请证书
命令如下
acme.sh --issue -d yourdimian.top -standalone -k ec-256
如果无法注册
如果默认CA无法颁发,则可以切换下列CA:
切换 Let’s Encrypt:acme.sh --set-default-ca --server letsencrypt
切换 Buypass:acme.sh --set-default-ca --server buypass
切换 ZeroSSL:acme.sh --set-default-ca --server zerossl
大家申请时需要把域名换成自己的域名
加密方式可以自己去查一下,我用的时ec-256(256位ecc椭圆曲线)
- 注意没打印证书之前都不算成功,CA可能会重复验证
- 检查一下证书的目录
7. 部署到Flask上
- 本篇就不考虑使用apache了,使用python快速验证
- 代码如下
from flask import Flask, render_template
import ssl
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
ssl_cert = '/root/.acme.sh/your.cre'
ssl_key = '/root/.acme.sh/your.key'
# 创建SSL上下文
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
ssl_context.load_cert_chain(ssl_cert, ssl_key)
# 启动Flask应用程序,使用HTTPS和SSL上下文
app.run(host='0.0.0.0', port='443',ssl_context=ssl_context)
看一下我们的网站是否可用
看一下证书