点亮你的 HTTPS?原来这么简单!!

安全 应用安全
HTTPS 如今已经相当普及,但是仍然有不少的同学,没有学过如何部署 HTTPS,刚好明哥前段时间折腾网站 ,刚好可以把这个过程详细的记录下来,教大家如何将你的 HTTP 网站上点亮 HTTPS 。

HTTPS 如今已经相当普及,但是仍然有不少的同学,没有学过如何部署 HTTPS,刚好明哥前段时间折腾网站 ,刚好可以把这个过程详细的记录下来,教大家如何将你的 HTTP 网站上点亮 HTTPS 。

[[343604]]

要想使用 HTTPS ,要做的事情还是有点多的:

  • 准备一个域名和服务器(自行准备)
  • 并将该域名解析到你的服务器ip上
  • 生成 CSR 证书请求文件
  • 拿着 CSR 文件去申请证书
  • 把申请到的证书部署到你的服务器上

1. 设置 DNS 解析

我有一个域名 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权威机构申请。

二者的区别是:

  1. 自己颁发的证书,需要客户端验证通过,也就是需要用户手动安装证书,并将其设置为受信任的根证书。但即使如此,浏览器上( chrome, firefox)仍不认可这种自签名证书,会在地址栏前面提示连接不安全,手动安装证书后,也会提示该证书无效。若想要继续访问,并忽略该提示,可以选择继续访问。
  2. 向权威的数字证书认证机构申请,由于这些机构在网民的电脑里都有相应的根证书,且这些机构是绝对可信任的。因此你在访问网站时,不会提示连接不安全。

下面,我将分别向你展示这两种方法,都是如何操作的。

第一种:向权威CA机构申请

在阿里云和腾讯云都可以 进行 SSL 证书的申请,证书的申请有付费的(价格也不便宜),也有免费的,看了一圈,只有腾讯云有免费的 SSL 证书的申请渠道(阿里云听说以前也有,后来关闭了)。

本篇文章,仅以演示教学之用,所以只用腾讯云的免费证书的就足够啦。

登陆腾讯云,可以看到SSL 证书有分很多种,企业型的,企业型专业版的,增强型,增强型专业版的,还有域名型免费版。

 

点击选择 域名型免费版

 

点击 免费快速申请后,填写域名和你的个人邮箱

 

再点击下一步,会需要你验证域名所有权,验证方式有如下三种

  1. 自动DNS验证
  2. 手动DNS验证
  3. 文件验证

但由于我的域名不是腾讯云平台解析的,因此没有 自动DNS验证的选项,只有其他两种

 

点击 确认申请 后,会提示你进入域名验证所有权的流程,这里我选择 手动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 脚本,你只要执行这个脚本就行了。

  1. $ bash create_self-signed-cert.sh --ssl-domain=demo.iswbm.com --ssl-trusted-domain=demo.iswbm.com --ssl-size=2048 --ssl-date=3650 

对应的参数的解释,在脚本中都有解释

 

这个脚本过长,不好直接贴上来,我将它放在我的公众号(Python编程时光)后台,你可以直接回复『证书签名』直接获取下载。

执行完成后,会在当前目录下生成好多个文件。

其中,只有两个文件对我们有用

 

4. 部署 SSL 证书

根据服务器的类型不同,部署安装的方式有有所区别,腾讯云的操作文档已经非常详细了,你可以通过这个链接访问到如下的文档:https://cloud.tencent.com/document/product/400/4143

 

这里我将以 CentOS 7.2 + Apache 为例,演示如何部署 SSL 证书。

先安装一下 mod_ssl

  1. $ yum install -y mod_ssl 

安装完后,在 /etc/httpd/conf.d/ 目录下 会有个 ssl.conf 文件。

编辑修改这个文件,以下是我的配置供你参考

  1. <VirtualHost 0.0.0.0:443> 
  2.      DocumentRoot "/var/www/html"  
  3.      #填写证书名称 
  4.      ServerName demo.iswbm.com 
  5.      #启用 SSL 功能 
  6.      SSLEngine on  
  7.      #证书文件的路径 
  8.      SSLCertificateFile /etc/pki/tls/certs/demo.iswbm.com.crt 
  9.      #私钥文件的路径 
  10.      SSLCertificateKeyFile /etc/pki/tls/private/demo.iswbm.com.key 
  11.      #根证书文件的路径 
  12.      SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt 
  13. </VirtualHost> 

如果你的证书是从权威 CA 机构上申请来的。

比如我上面从腾讯云上申请来的,那么这三个文件就是从已经从腾讯云的控制台上下载下来的那三个文件。

在修改完后,务必记得把下载的这三个文件,放到相应的目录中去。

 

配置完 ssl.conf,可能还需要你 check 一下 /etc/httpd/conf/httpd.conf 的一些配置,这些配置一般用默认的就可以,但是以防万一,还是写一下吧

  1. Include conf.modules.d/*.conf 

写这一行的目的,就是为了 httpd 去加载 mod_ssl 这个模块

  1. $ cat /etc/httpd/conf.modules.d/00-ssl.conf  
  2. LoadModule ssl_module modules/mod_ssl.so 

一切配置完成后,记得重启一下 httpd 服务

  1. $ systemctl restart httpd 

然后使用 chrome 访问一下 https//demo.iswbm.com 看看,大功告成。

 

而如果你的证书是自签名的。

ssl.conf 配置文件下的应该改成这样

  1. <VirtualHost 0.0.0.0:443> 
  2.      DocumentRoot "/var/www/html"  
  3.      #填写证书名称 
  4.      ServerName demo.iswbm.com 
  5.      #启用 SSL 功能 
  6.      SSLEngine on  
  7.      #证书文件的路径 
  8.      SSLCertificateFile /etc/pki/tls/certs/tls.crt 
  9.      #私钥文件的路径 
  10.      SSLCertificateKeyFile /etc/pki/tls/private/tls.key 
  11. </VirtualHost> 

同时记得把这两个文件也拷贝到相应的目录下

  1. $ cp tls.crt /etc/pki/tls/certs/ 
  2. $ cp tls.key /etc/pki/tls/private/ 

最后还是不要忘了重启 httpd

  1. $ systemctl restart httpd 

试着用 chrome 访问一下,可以看到 chrome 提示该连接不安全

 

如果执意要访问,可以点击左下方的 继续前往,这样以后再访问的时候,就不会再出现这个警告页面了。

 

不安全 三个字,让人很没有安全感,那有没有办法去掉呢?

答案是,没有,只要是自签名的证书,在 chrome ,firefox 等主流浏览器看来都是不安全的。

即使你把这个根证书添加到你的受信任的证书列表中,也是徒然。

下面就试着来安装一下这个根证书。

按照下图指示,拖动证书到本地磁盘上。

 

打开 Mac 上的 钥匙串访问

 

点击 登陆,然后再拖动这个证书到窗口中进行安装

 

右键该证书,点击 显示简介,跳出下面的界面后,再点击 信任,把 IP 安全选择选为 始终信任。

 

设置完后,再访问下 demo.iswbm.com ,仍然显示连接不安全,并且证书是无效的

 

点击证书,显示证书,该证书确实已经放入信任列表中了。

 

 

 

到这里文章就结束了,你应该已经了解点亮 HTTPS 整个流程是怎么样的。

本文转载自微信公众号「Python编程时光」,可以通过以下二维码关注。转载本文请联系Python编程时光公众号。

 

责任编辑:武晓燕 来源: Python编程时光
相关推荐

2020-11-27 10:34:01

HTTPHTTPS模型

2021-04-19 05:42:51

Mmap文件系统

2023-11-01 14:49:07

2022-06-06 08:31:05

Base64编码Base58

2023-09-22 08:00:00

分布式锁Redis

2019-10-08 12:32:07

运维架构技术

2014-10-08 15:00:50

SUSE操作系统云计算

2019-03-15 10:55:12

通信系统手机

2016-03-21 11:09:52

Tableau/大数据

2014-11-25 15:02:01

客服系统

2010-08-02 13:55:20

2022-11-02 19:08:48

微服务轮询消费者

2020-10-22 08:01:52

XMLJSON转换

2021-06-10 06:57:39

Redis存储数据库

2019-05-27 14:03:48

开发技能代码

2021-12-30 10:55:54

Python游戏脚本

2022-01-27 14:12:49

Python游戏脚本

2023-05-07 23:22:24

golang

2020-11-02 14:38:56

Java 深度学习模型

2020-09-25 07:49:36

策略模式Spring
点赞
收藏

51CTO技术栈公众号