HTTPS 现在很流行,但是还是有很多学生没有学会如何部署 HTTPS,就在明哥前段时间折腾网站 ,只是可以详细记录这个过程,教你如何把你的 HTTP 网站点亮 HTTPS 。
要想使用 HTTPS ,还有很多事情要做:
- 准备域名和服务器(自行准备)
- 并将域名分析到您的服务器中ip上
- 生成 CSR 证书请求文件
- 拿着 CSR 文件申请证书
- 将申请的证书部署到您的服务器上
我有一个域名 iswbm.com,下面有很多子域名,比如写 Python 在线博客 python.iswbm.com,还有写 Golang 在线博客 golang.iswbm.com,还有我的图床 image.iswbm.com 等等。
这里新建了个子域名 demo.iswbm.com ,并将其分析到 我的服务器上,如下图所示(服务器 ip 已码掉)。
2. 搭建 HTTP 为了方便,我在这里用 Apache 放一个 HTTP 静态网页,方法很简单,大家都可以百度。
3. 申请 SSL
证书SSL 数字证书是怎么来的?
你可以自己做,也可以去CA申请权威机构。
两者的区别在于:
一是向权威CA机构申请
在阿里云和腾讯云都可以 SSL 证书申请,证书申请有付费(价格不便宜),也有免费,看一圈,只有腾讯云有免费 SSL 证书申请渠道(阿里云以前听说过,后来关闭了)。
本文仅用于演示教学,仅用于腾讯云免费证书。
登录腾讯云,可以看到SSL 证书有分很多种,企业型的,企业型专业版的,增强型,增强型专业版的,还有域名型免费版。
点击选择 域名免费版
点击 免费快速申请后,填写域名和您的个人邮箱
点击下一步,您将需要验证域名所有权。验证方法有三种
点击 确认申请 后,将提示您进入域名验证所有权的过程。在这里,我选择 手动DNS验证。
审核通过后,3s 将向您颁发证书,您可以点击控制台下载证书。
下载的会是 zip 包。
会有不同类型的服务器(包括 Apache、IIS、Nginx、Tomcat)的文件夹。
我用的是 Apache 本文件夹下有三个文件:
1_root_bundle.crt:根证书
2_demo.iswbm.com.crt:域名证书
3_demo.iswbm.com.key:私钥文件
下一步将在我的服务器上部署这三个文件。
接下来说第二种 SSL 证书申请方式。
二:自签名 SSL 证书
第三方 没有权威CA 机构给自己颁发证书,然后给自己颁发。
自签名 SSL 的证书制作过程,可以分为两步:
自己要当 CA 机构,那 CA 有的 CA 根证和私钥 不能少,所以第一步是生成 CA 的 crt 证书 和 CA 的私钥。
要申请证书,服务器必须有一个密钥对(公钥和私钥)
用上面生成的公钥制作 CSR 证书申请文件
第一步用 CA 私钥,给这个 CSR 签名,生成我们需要的 SSL 数字证书文件。
步骤多,命令多,参数多。对于那些只想学习证书签发过程的人来说,背诵这些命令并不是一个好的选择。毕竟,这种事情可能不会做几次。
所以我把这些步骤和命令整合成 shell 脚本,你只需要执行这个脚本。
这个脚本太长,不好直接贴。我把它放在我的微信官方账号里。(Python后台可以直接回复编程时间)『证书签名』直接下载。
执行完成后,许多文件将在当前目录下生成。
只有两个文件对我们有用
4. 部署 SSL 证书
腾讯云的操作文档已经非常详细了,您可以通过此链接访问以下文档:https://cloud.tencent.com/document/product/400/4143
这里我将以 CentOS 7.2 Apache例如,演示如何部署 SSL 证书。
先安装 mod_ssl
编辑修改此文件。以下是我的配置供您参考
例如,如果我从腾讯云申请,这三个文件是从腾讯云控制台下载的三个文件。
在修改完后,务必记得把下载的这三个文件,放到相应的目录中去。
配置完 ssl.conf,也许还需要你 check 一下 /etc/httpd/conf/httpd.conf 的一些配置,这些配置一般用默认的就可以,但是以防万一,还是写一下吧
如果你的证书是自签的。
ssl.conf 配置文件下应该改成这样
如果你坚持要访问,你可以点击左下角的 继续访问,这样当你以后再访问时,警告页面就不会再出现了。
不安全 三个字,让人很没有安全感,有没有办法去掉?
答案是,没有,只要是自签证书,在 chrome ,firefox 等主流浏览器似乎不安全。
即使你在你信任的证书列表中添加这个根证书,也是徒然的。
试着安装这个根证。
按下图所示,将证书拖到本地磁盘上。
打开 Mac 上 钥匙串访问
点击 登录,然后将证书拖到窗口安装
右键此证书,点击 显示简介,跳出下面的界面,然后点击 信任IP 始终信任安全选择。
设置后,访问 demo.iswbm.com ,连接仍然不安全,证书无效
点击证书显示证书,证书确实被列入信任列表。
文章到此结束,你应该已经知道点亮 HTTPS 整个过程是怎样的?
本文转载自微信公众号「Python编程时光」,请联系以下二维码。Python编程时间微信官方账号。