申请SSL证书保姆级教程,包括FreeSSL申请、Acme脚本申请等方式。

246次阅读
没有评论

共计 3434 个字符,预计需要花费 9 分钟才能阅读完成。

前言
1.1 SSL证书是什么?
用人话讲就是:HTTP协议的升级版,带了个加密而已。
1.2 HTTP协议又是什么?
你用百度就可以查到,百度成千上万的搜索结果都会告诉你:Http它是一种超文本传输协议

我们可以发现,这个里面有三个名词:“超文本”、“传输”和“协议”。

我们分开来讲:
协议
提到协议,你会想到什么呢?没错,那就是 合约、约定、规范化
通过这个,我们就可以这样说:HTTP是一种约定,是进行通讯的计算机双方都必须遵从的一种约定。
传输指的就是在请求方和应答方之间传输信息,也就是我们常说的数据包
,而这种传输是双向的,同样是一台机器,这台机器可以同时称为客户端也可以成为服务端。
而在传输的工程中呢,也能加入一些第三方的其他内容,比如说数据压缩,文件防护之类的。
最后也就是超文本说明传输的数据,它首先就是文本组成的,是可以被浏览器直接处理并解析的这样的文本,然而单纯的文本肯定不能满足我们平常生活中的所需,所以文本的含义也就被拓展了,成为了现在我们所说的超文本,它包括什么链接、图片、视频等,如果你熟悉网站开发,也应该知道html就是一种超文本文件。
所以HTTP是用来处理超文本传输的一种计算机协议,它并没有包含了所有的传输过程。
然而HTTP协议传输的数据都是未加密的,也就是我们说的”明文传输“
明文传输有什么弊端呢? 比如说,你登录你的支付宝,假如支付宝的网站是HTTP协议,也就是明文传输的,那么你的密码和账号,就可以通过网络抓包工具抓到,这些数据都是明文的,就问你怕不怕吧。
所以就出现了HTTPS,也就是HTTP的升级版本,HTTPS主要是由两部分组成,HTTP+SSL/TLS,也就是在HTTP的基础上又加上了一层处理加密信息的模块。 那服务端和客户端的信息传输,都会通过TLS加密,然后传输的都是加密的数据。既然提到了加密,我们也就来到了TLS证书,我们常常将其称为SSL证书,我们成功申请证书之后,就会有一个公钥和一个私钥。这也就延伸出了这期文章。

Freessl.cn申请证书
这种方式申请证书,比较简单,而且还可以申请到为期一年的 “亚洲诚信” 的证书,但是,目前此网站申请证书需要进行手机验证,所以,若是有疑虑的小伙伴们还是去尝试下面其他的方法。
好,我们打开freessl.cn的官网,地址:Freessl.cn

可以看到,我们可以申请免费一年的”亚洲诚信“的证书和3个月51SSL的证书。
我们在输入框里就是输入我们的域名,如图:

我这里以*.rayo.cc为演示:填写完毕后直接点击创建免费的SSL证书即可

然后,我们看一信息是否正确,如果正确的话,直接点击”点击创建“的按钮:

我们点击按钮之后,他会让我们安装KeyManager,我们去它的官网下载安装即可:Keymanager

因为我已经安装了,我们直接点击打开,它会提示CSR生成成功,我们接着返回到浏览器,然后点击网页中的”继续“按钮:

接着它会让我们进行DNS验证,我们跟着提示,一步一步添加DNS验证即可:

我们这里就不接着演示了,后面的大家应该都会。看到这里还不懂或者不会继续的,可以在文章底部留言,我们解答的。

Acme 脚本申请证书
Acme 脚本申请证书,是我们用到的最常见的一种证书的申请方式,它有很多的申请方法,大家只需要找到一种适合自己的也就好了。
不管用下面的何种方式申请,都需要安装 Acme,有一部分的申请场景需要用到相关的插件,所以我们需要提前安装。

下面环境的安装方式,大家根据自己的系统选择命令安装就好了。

apt update -y #Debian/Ubuntu 命令
apt install -y curl #Debian/Ubuntu 命令
apt install -y socat #Debian/Ubuntu 命令
yum update -y #CentOS 命令
yum install -y curl #CentOS 命令
yum install -y socat #CentOS 命令
安装 Acme 脚本

curl https://get.acme.sh | sh
重要申明
从 acme.sh v 3.0.0 开始,acme.sh 使用 Zerossl 作为默认 ca,您必须先注册帐户(一次),然后才能颁发新证书。
具体操作步骤如下:
1、安装 Acme 脚本之后,请先执行下面的命令(下面的邮箱为你的邮箱)
~/.acme.sh/acme.sh –register-account -m xxxx@xxxx.com
2、其他的命令暂时没有变动

80 端口空闲的验证申请
如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 Acme.sh 还能假装自己是一个 WebServer, 临时监听在 80 端口, 完成验证

~/.acme.sh/acme.sh –issue -d mydomain.com –standalone
Nginx 的方式验证申请
这种方式需要你的服务器上面已经部署了 Nginx 环境,并且保证你申请的域名已经在 Nginx 进行了 conf 部署。(被申请的域名可以正常被打开)

~/.acme.sh/acme.sh –issue -d mydomain.com –nginx
http 的方式验证申请
这种方式需要你的服务器上面已经部署了网站环境。(被申请的域名可以正常被打开)

原理:Acme 自动在你的网站根目录下放置一个文件, (这个文件可以被互联网访问)来验证你的域名所有权,完成验证. 然后就可以生成证书了.

实例代码:(后面的路径请更改为你的 网站根目录 绝对路径 )

~/.acme.sh/acme.sh –issue -d mydomain.com -d www.mydomain.com –webroot /home/wwwroot/mydomain.com/
DNS 验证的方式申请证书
这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

Acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商

该方式可以申请多域名、泛域名证书,达到很多域名可以共用一张证书的目的。

设置 Cloudflare API 令牌

export CF_Key=“xxxxxxxxx” #请替换成为自己的cf的key
export CF_Email=”qingqian@rayo.cc” #请替换为自己的cf邮箱
验证 DNS 并申请证书
若是DNS验证申请不下来,请尝试使用上面的 Web 验证的方式申请证书
更改下面的域名为你自己的域名

~/.acme.sh/acme.sh –issue –dns dns_cf -d rayo.cc -d *.rayo.cc
mkdir /root/cert
~/.acme.sh/acme.sh –installcert -d rayo.cc –key-file /root/cert/private.key –fullchain-file /root/cert/cert.crt
~/.acme.sh/acme.sh –upgrade –auto-upgrade
chmod -R 755 /root/cert
安装证书到指定文件夹
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的证书文件。
正确的使用方法是使用 –install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置,比如下面的代码

~/.acme.sh/acme.sh –installcert -d mydomain.com –key-file /root/private.key –fullchain-file /root/cert.crt
上面的 /root/private.key 以及 /root/cert.crt 是把密钥和证书安装到 /root目录,并改名为 private.key 和 cert.crt

更新证书
目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.

更新 Acme 脚本
升级 Acme.sh 到最新版本

~/.acme.sh/acme.sh –upgrade
如果你不想手动升级, 可以开启自动升级:

~/.acme.sh/acme.sh –upgrade –auto-upgrade
之后, acme.sh 就会自动保持更新了.

原文地址:https://blog.rayo.cc/archives/37

正文完
 
评论(没有评论)