如何为个人网站申请SSL证书

本文将介绍如何方便快捷地申请并部署SSL,使得你自己搭建的网站可以通过https访问,提高安全性和搜索排名。


SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。

SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了),即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露,保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。数字签名又名数字标识、签章 (即 Digital Certificate,Digital ID ),提供了一种在网上进行身份验证的方法,是用来标志和证明网络通信双方身份的数字信息文件,概念类似日常生活中的司机驾照或身份证。

通过部署SSL,网站服务器和用户之间的数据传输都会被加密,第三方几乎没有办法破解,极大地降低了在互联网上泄露隐私的风险。

目前有许多颁发SSL证书的机构,不同的机构有不同的公信度。理论上数字证书颁发机构需要对颁发对象(也就是你的网站)进行审查,以保证自己的公信度。这个公信度体现在浏览器的支持上。如果一个证书颁发机构公信度极差,是可能被浏览器除名,而使用该颁发机构的所有网站被浏览器警告危险甚至无法访问的。此外,如果一个证书颁发机构比较新,旧版浏览器也可能会出现不兼容的情况。

SSL证书既有付费的也有免费的。目前来说,免费的证书中我知道的有两个,一个是零门槛的Let's Encrypt,另一个是几乎零门槛的阿里云SSL证书免费版。根据之前的介绍,免费证书主要的问题在于公信力和兼容性。不过一般个人网站也不需要注意这些,万一出问题了顶多就更换一个证书呗。


上文提到的两个免费证书,都有DNS认证和文件认证两种比较简单的签发前认证方式。签发前的认证主要目的是为了确保网站网站为你自己所有而不是别人在捣乱。

目前网上有很多Let's Encrypt的教程。如果你对你的服务器有控制权限(至少能SSH和sudo),建议使用Let's Encrypt,官方提供的程序可以一键全自动申请并且部署,一步到位非常方便。此外,宝塔面板也内置了全自动申请Let's Encrypt的功能。

本博客使用的是阿里云的免费SSL证书。在申请之前,你需要注册一个阿里云账号,可能还需要实名认证。准备完毕后就可以在阿里云官网搜索SSL证书前往申请。

  • 点击选购证书,选购免费版进行购买。
  • 购买完毕后进入SSL证书控制台。
  • 点击新购买的证书“证书申请”按钮
  • 按要求填写你的相关信息。根据提示,结合你的实际情况选择DNS验证或者文件验证。由于我的域名不是在阿里云购买的,上传文件也比较麻烦,因此我选择了手工DNS验证。
  • 点击“下一步”进入认证之后,按照提示进行相应的操作。例如我是手工DNS验证,就按照提示前往域名注册商的网站对我的域名添加一条特定TXT记录,内容是随机的,由阿里云给出,复制过去就行了。
  • 如无意外,几分钟后点击验证即可验证通过(因为DNS生效是要一段时间的,建议等待一段时间)
  • 随即进入等待签发的阶段(阿里云提示大约1小时,一般十几分钟内即可)。
  • 签发完成后会有短信和邮件提示。然后在阿里云SSL证书控制面板处下载相应的证书。最好根据相应的服务器类型选择下载。如果不清楚服务器类型,一般来说使用“其它”也是没问题的。
  • 下载之后,会有.key文件和.pem文件,对应的是证书的秘钥(key)和证书的内容(pem),可以直接使用记事本打开。
  • 打开你的网站的控制台(如果有的话),把key和pem复制到SSL证书功能中相应的位置即可。不同的云服务器提供商或者自行安装的后台面板有不一样的操作方法,但是大同小异。如果没有后台面板,请复制文件到指定地方或者复制文件内容到指定配置文件中,不同的服务端也有不同的方法,这里也不再赘述。
  • 接下来是配置跳转。htaccess.iapolo.com可以自动生成.htaccess文件,用来把http重定向至https,并且添加一些其他功能。把生成的.htaccess文件放置在网站根目录即可生效。
  • 接下来是检查流程
    • 使用http访问你的网站,查看是否跳转至https并且正常显示。
    • 如果出现排版错乱、元素丢失,一般是因为网页源代码中仍旧使用了http而不是https来表示文件路径,请自行修改。

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

Creative Commons License