教你把HTTP网站免费转成HTTPS网站

服务器
关于HTTPS和HTTP的区别,以及HTTPS的优势、HTTPS和SSL之间的关系等,本文不做任何讨论,感兴趣的可以自行百度。本文只用来记录作为一个“外行人”,如何一步步构建自己的HTTPS服务器的过程。

关于HTTPS和HTTP的区别,以及HTTPS的优势、HTTPS和SSL之间的关系等,本文不做任何讨论,感兴趣的可以自行百度。本文只用来记录作为一个“外行人”,如何一步步构建自己的HTTPS服务器的过程。

1、申请SSL证书

SSL证书是一种加密协议。大部分企业级的SSL证书都是需要收费的,而且对于个人开发者来说都不便宜(土豪随意)。个人使用的SSL证书,有一些是免费的,比如Let's Encrypt、阿里云、腾讯云、又拍云等,都有提供免费证书的申请接口。

这里以阿里云为例,其免费申请流程为:

(1)注册阿里云账号

(2)打开“管理控制台” -- “安全(云盾)” -- “CA证书服务”

(3)打开右上角“购买证书”:

[[208385]]

(4)选择“免费型DV SSL”,并点击立即购买。购买成功后跳转到“我的证书”页面:

(5)此时的状态处于“待完成”,点击右侧“补全”按钮,补全域名信息:

(6)按照流程单击“下一步”,填写个人信息,上传相关信息等。***跳回“我的证书”页面:

(7)此时的状态变成了“待审核”。点击右侧“进度”按钮,进入详情页:

(8)这里需要配置域名授权验证。具体步骤可参考:如何配置域名授权验证? 配置完成后点击“配置检查”,如果配置成功,则:

此时耐心等待审核结果即可。一般需要3到5个工作日。

2、配置基本的Nginx服务器

这里我们使用Python的Flask框架,构建一个最简单的网站,页面直接返回Hello World。

这里建议大家使用docker进行网站部署。推荐一个自己的Docker镜像,镜像中集成了Python网站开发、爬虫等所需要的各种库,以及安装有uWSGI和Nginx等相关服务。地址如下:https://hub.docker.com/r/xianhu/centos/

下载镜像后直接新建容器,并开放80端口和443端口即可:

PS:这里开放80是为了测试HTTP,开放443是为了测试HTTPS。

  1. docker run -it --name test -p 80:80 -p 443:443 xxx/image:v10 

进入镜像后,新建FlaskDemo目录,并新建FlaskDemo.py文件。文件代码如下:

  1. from flask import Flask 
  2.  
  3. app = Flask(__name__) 
  4.  
  5. @app.route('/'
  6. def hello_world(): 
  7.     return 'Hello World!' 
  8.  
  9. if __name__ == '__main__'
  10.     app.run() 

然后利用uWSGI启动Flask程序,关于uWSGI的知识相信做过Flask的程序员应该都了解。

  1. uwsgi -s /tmp/uwsgi.sock -w FlaskDemo:app --chdir /root/FlaskDemo/ --chmod-socket=666 

修改Nginx配置文件,配置文件地址:/etc/nginx/conf.d/default.conf:

  1. server { 
  2.     listen       80; 
  3.     server_name  xxx.com; 
  4.     charset utf-8; 
  5.  
  6.     location / { 
  7.         include uwsgi_params; 
  8.         uwsgi_pass unix:/tmp/uwsgi.sock; 
  9. server { 
  10.     listen       80 default
  11.     server_name  ""
  12.     return       500; 
  13. server { 
  14.     listen       80 default
  15.     server_name  ""
  16.     return       500; 

配置很简单。修改之后重启nginx -s reload即可使配置文件生效。此时访问域名地址,即可看到如下效果,HTTP网站配置完成。注意:域名需要备案,否则国内不允许上线。

此时是通过HTTP进行访问的。下一步我们就需要改为HTTPS访问。

3、在Nginx中配置SSL证书

经过两三天的等待,SSL证书终于申请成功了,即在阿里云的“安全(云盾)”产品中的“CA证书服务”中,“证书状态”变成了“已签发”:

下载证书到服务器,下载后可以得到两个文件:xxxx.pem 和 xxxx.key

在Nginx的安装目录下,新建文件夹cert,并将上述两个文件复制到该文件夹下:

此时修改Nginx配置文件/etc/nginx/conf.d/default.conf:

  1. server { 
  2.     listen       443; 
  3.     server_name  xxx.com; 
  4.  
  5.     charset utf-8; 
  6.     #access_log  /var/log/nginx/host.access.log  main; 
  7.      
  8.     ssl on
  9.     ssl_certificate   cert/xxxx.pem; 
  10.     ssl_certificate_key  cert/xxxx.key
  11.     ssl_session_timeout 5m; 
  12.     ssl_ciphers .... 
  13.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
  14.     ssl_prefer_server_ciphers on
  15.  
  16.     location / { 
  17.         include uwsgi_params; 
  18.         uwsgi_pass unix:/tmp/uwsgi.sock; 
  19.     } 

保存配置文件后,重启Nginx:nginx -s reload。

此时再去访问网址,即可得到:

 

即HTTPS配置成功!

责任编辑:武晓燕 来源: 撸代码,学知识
相关推荐

2018-07-30 13:19:05

网站HTTPHTTPS

2019-07-30 10:34:53

证书HTTPS网站

2017-02-07 16:18:58

2021-10-29 12:01:11

HTTP代码前端

2017-07-25 10:57:05

2021-01-21 12:10:10

httphttpsSSL证书

2015-05-04 09:56:19

HTTPS

2017-09-06 17:30:41

网站升级HTTPS

2011-11-23 19:26:43

2015-06-15 10:16:25

2011-06-10 13:34:17

关键词

2011-03-10 10:09:01

FacebookLAMP

2023-01-13 00:11:14

2011-07-03 20:22:09

SEO

2020-08-16 09:03:45

JavaScript网站开发

2011-11-09 14:54:26

2022-03-19 16:47:47

WordPress网站迁移服务器

2021-08-02 05:16:36

IE技巧操作系统

2018-11-30 16:17:28

HTTPS

2023-02-07 16:11:41

点赞
收藏

51CTO技术栈公众号