如何给你的网站加上免费的https证书|Let’s Encrypt
本文最后更新于 320 天前,其中的信息可能已经有所发展或是发生改变。

1.写在前面

让我们想象一下这个场景

一天,你买了一个域名。可能是正式的com,也可能是便宜的top,xyz什么的。

总之,你终于可以把域名挂在你的网站上面了。

但是,因为没有https,你和网站的数据全程明文发送,包括用户名和密码。

好吧,于是你选择搞一个证书。你去了阿里云之类的服务商看一下。

我去,这价格是你域名的多少倍了。

你决定自己给自己签一张10年的证书算了,但是这样你的浏览器就要红温(警告)了。

于是,在心灰意冷下,你搜索免费证书,看到了这篇文章(可能吧)。

2.了解证书

这里是科普部分,想看部署的可以去下一节。

我们知道,http协议是明文传输。为了安全,有了https。

HTTPS 的安全性主要依赖于 SSL/TLS 协议的密钥交换过程。

  1. 浏览器请求(Client Hello):浏览器向服务器发送一个消息,包含支持的加密算法和一个随机数。
  2. 服务器响应(Server Hello):服务器选择加密算法,返回一个随机数和它的数字证书(包含公钥)。
  3. 浏览器验证证书:浏览器验证服务器证书的有效性和真实性。
  4. 生成预主密钥(Pre-Master Secret):浏览器生成一个随机的预主密钥,并使用服务器的公钥加密后发送给服务器。
  5. 服务器解密:服务器用自己的私钥解密预主密钥。
  6. 生成对称密钥:浏览器和服务器使用两个随机数和预主密钥生成会话密钥。
  7. 加密通信:使用会话密钥进行对称加密通信,确保数据传输的安全性。

证书中包含服务器的公钥,浏览器可以使用这个公钥加密生成的随机密钥(预主密钥),然后发送给服务器。只有持有对应私钥的服务器才能解密这个随机密钥,确保密钥交换的安全性。

证书的类型有DV、OV、EV。

  1. 域名验证证书(Domain Validation, DV)
    • 特点:验证证书申请者对域名的所有权,验证过程快速简单。
    • 适用场景:适用于个人网站、小型企业网站等不需要高度信任的场合。
  2. 企业验证证书(Organization Validation, OV)
    • 特点:在验证域名所有权的基础上,还需要验证申请者的企业身份信息。
    • 适用场景:适用于需要用户信任的中型企业和组织网站。
  3. 扩展验证证书(Extended Validation, EV)
    • 特点:验证最为严格,需要详细审核企业身份和运营情况,验证时间较长。
    • 适用场景:适用于金融机构、大型电商、政府机构等需要高度信任的场合。

知道自己该选什么证书了吧 (你也没得选,怎么可能给你免费的OV、EV ( ̄▽ ̄)” )

那么,我们以Let’s Encrypt为证书提供商演示。

3.获取证书

为什么选择Let’s Encrypt?

因为它可以签更多子域名,我记得zerossl好像才给主域名和www子域名

你可以随便打开几个别人的博客看看,有些就是Let’s Encrypt的证书 (比如我)

好了,首先,我们需要在服务器安装certbot。这是一个自动签发证书的软件。

对于Debian系,首先安装snap

apt install snapd

RHEL系

yum install snapd

然后再用snap安装certbot

snap install --classic certbot

什么?你问我为什么不加sudo?因为我是root战神,而且我相信你现在也是ssh挂root。

ln -s /snap/bin/certbot /usr/bin/certbot

执行完这些,就可以运行certbot命令了。

certbot获取证书首先要验证你的域名,比如网站目录验证、DNS验证这些。

网站在docker里或者没建好会影响网站目录验证,这里以DNS验证为例。

建议写好DNS记录后再申请。

sudo certbot certonly --manual --preferred-challenges=dns -d <你的域名>

这里输入你的邮箱

让你阅读什么条款,选Y

是否允许给你发垃圾邮件,看你的情况。

验证环节,在你的DNS里加一条TXT记录,指向_acme-challenge.<你的域名>

内容就是中间那一串东西,Let’s Encrypt和cloudflare合作了。所以如果你是在cloudflare的DNS,应该会很快。

等一会后按回车。

申请成功,证书和私钥在/etc/letsencrypt/live/那里。

其实你也可以事先自己生成私钥,然后写一份csr申请的。

至于配置,因为apatch和nginx有不同的配置方法。这里以nginx为例。

4.配置

编辑你的nginx.conf,其实主要就这三个。

    ssl_certificate /www/sites/www.trfcutt.top/ssl/fullchain.pem; 
    ssl_certificate_key /www/sites/www.trfcutt.top/ssl/privkey.pem; 
    ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1; 

在你的server块里找到这些,没有的可以去复制粘贴网上的。

ssl_certificate改成证书位置,ssl_certificate_key改成私钥位置。

第三个是支持的算法。

成功的话,就可以用https进了。

作者信息:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇