关于 HTTPS 的基本原理大家都已经不再陌生,今天和大家说说如何搭建一个支持 HTTPS 的服务端。

服务端的 HTTPS

HTTPS 已经几乎成为了当前互联网推荐的通信方式,它能最大化保证信息传输的安全,从去年苹果的强制 HTTPS ,到如今各大网站都支持了 HTTPS。它会越来越普及。

之前写过几篇关于 HTTPS 原理的文章,有用户留言希望了解一些如何在服务端搭建 HTTPS 服务的内容,这次就和大家聊聊这个话题。

SSL 证书

搭建一个 HTTPS 站点,第一步要做的就是申请 SSL 证书, 而且要在标准的证书颁发机构来申请。 当然,从技术上来说,你可以使用自签名证书,但自签名证书会被所有的浏览器视为不安全的证书,并且会给用户报错,就像这样:

所以,还是需要申请一个正规的证书的。 可申请证书的颁发机构有很多,比如 GoDaddy,Comodo,Verisign 等等。价格从一年几美金到几十美金不等。

我们就以 GoDaddy 为例,带大家了解一下流程。 在 GoDaddy 的首页有一个 Web Security 标签,点击这个标签后可以找到 SSL Certificates 选项:

点击进去, 就可以看到可选的几个证书形式,有单域名的,还有允许多个二级域名的等:

避免广告嫌疑,下面的价格信息略去了~,这里只给大家介绍流程,帮助大家了解。 证书服务商大家可以自行选择。

接下来,证书颁发机构会让你填写一个叫做 CSR 的东西, 如果大家搞 iOS 开发对这个应该不陌生,申请苹果开发者证书的时候大家也做过类似的事情。

CSR 全称 Certificate Signing request。 顾名思义就是用于申请证书必须的一些信息,在 Lunix 系统中,它可以通过命令生成(大多数的服务端应该都是基于 Linux 的,所以我们用它来作为例子):

 
  1. $ openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr

openssl 命令,如果你的系统没有安装的话,可以通过包管理先安装。 需要把这里面的 yourdomain.key 和 yourdomain.csr 替换成你自己的名称,可以是域名,也可以是其他标识。

生成成功后,可以用 cat 命令输出 yourdomain.csr 中的内容:

 
  1. $ cat yourdomain.csr

会在命令行输出 CSR 的内容,把这段内容复制到前面截图中的文本框中,然后点击生成就好了。

注意,这里的 yourdomain.key 文件你要保管好。 这是你证书的私钥,后面配置 HTTPS 的时候需要用到它。 并且它不能重新生成,而且不能泄露出去。原因可以参考我前面关于 HTTPS 原理的相关文章。

与此同时,证书颁发机构在你提交 CSR 之后,会给你生成证书文件, Godaddy 会生成两个证书,一个是你站点的证书,一个是根证书。 把它们下载到你的服务器上面。

Apache 服务端配置

证书准备好之后,我们要对服务端程序进行配置,让它支持 HTTPS。这里我给大家以 CentOS 7 操作系统, Apache 2.x 服务端程序为例。

Apache 的 HTTPS 配置文件一般在 /etc/httpd/conf.d/ssl.conf 这个位置。 用 vim 编辑器打开它, 然后加入这样一个节点:

 
  1. <VirtualHost *:443>
  2. SSLEngine On
  3. SSLCertificateFile /root/yoursite.crt
  4. SSLCertificateKeyFile /root/yoursite.key
  5. SSLCACertificateFile /root/rootcert.crt
  6. ServerAdmin admin@yoursite.com
  7. ServerName yoursite.com
  8. DocumentRoot /var/www/html/
  9. </VirtualHost>

这里用到了我们前面准备的证书和秘钥。 SSLCertificateFile 是你站点的证书, SSLCACertificateFile 是根证书, SSLCertificateKeyFile 是只保存在你服务器的私钥。

有了这些信息后,Apache 就可以正确的处理 HTTPS 请求了。 在这之前我们还需要在做最后一步操作, 编辑 /etc/httpd/conf/httpd.conf 文件, 这个是 Apache 的主配置文件, 加入这样一行:

 
  1. Listen 443

这个是让你的服务端同时监听 443 端口。 因为 HTTPS 的默认端口是 443, 所以这个设置是必须要有的。

一切都就绪后,重启你的服务器:

 
  1. systemctl restart httpd

然后再用浏览器输入 https://yoursite.com 访问你的站点时,就应该可以看到 HTTPS 验证成功的小锁头了。

防火墙设置

如果配置都就绪,你重启了之后,依然不能正常访问,有可能是你的防火墙把 443 端口拦截了,把它打开:

 
  1. iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
  2. iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

结束

目前成熟的 Web 服务程序都有对 HTTPS 很好的支持,只需要经过简单的配置,即可完成 HTTPS 服务器的搭建。 而 HTTPS 之所以相对性能消耗更大,是因为每次数据传输都需要进行加密和解密的操作。 作为 APP 开发者们,可能对服务端的技术了解的并没有那么深,可以把它作为一个备忘录,日后用到的时候再来看看。

关于搭建HTTPS服务器服务相关推荐

  1. 信息安全实践Lab1-自建CA证书搭建https服务器

    title: 信息安全实践Lab1-自建CA证书搭建https服务器 date: 2021-12-21 02:44:40 tags: 信息安全 categories: 信息安全实践 信息安全实践Lab ...

  2. Nodejs 搭建https服务器(二)

    3. Node搭建https服务器 3.1 配置express项目 $ cd /Users/51testing/Desktop/https $ express HttpsService ....    ...

  3. Linux中怎么使用SSL搭建https服务器

    文章目录 Linux中怎么搭建https服务器 一.SSL认证(https): 1.简介: 2.http和https的区别: 3.SSL建立过程: 二.准备工作: 三.搭建https服务器: 1.安装 ...

  4. Nodejs 搭建https服务器(一)

    2019独角兽企业重金招聘Python工程师标准>>> 1. 搭建https服务器---前奏 首先需要理解几个概念 1. HTTP是一个网络协议,是专门用来传输 Web 内容; 2. ...

  5. xampp mysql ssl_xampp搭建https服务器

    快速配置 不想看下面,只看这一部分就可以,前提是你电脑上安装的是 xampp. 打开文件 httpd-ssl.conf, 该文件在 xampp/apache/conf/extra 目录下 把Serve ...

  6. Node.js搭建https服务器

    文章目录 前言 一.下载Nginx类型证书 二.打开下载好的文件,将.pem后缀的文件修改为.crt 三.编写Node.js程序 四.把程序上传到云服务器运行 五.启动服务器,进行本地测试 总结 前言 ...

  7. 自建CA证书搭建https服务器

    由于CA收费,所以可以自建CA,通过将CA导入浏览器实现https的效果,曾经12306购票就需要自行导入网站证书. 关于https 2015年阿里巴巴将旗下淘宝.天猫(包括移动客户端)全站启用HTT ...

  8. 腾讯云CentOS自建CA证书搭建https服务器

    为了完成实验以及不同电脑虚拟机不同,索性买了一个腾讯云的服务器,学生价,很便宜. 实验环境:CentOS7.5,Apache 2.4.6 OpenSSL 1.0.2k 理论知识 Http和Https的 ...

  9. 信安实践——自建CA证书搭建https服务器

    https://www.cnblogs.com/libaoquan/p/7965873.html 1.理论知识 https简介 HTTPS(全称:Hyper Text Transfer Protoco ...

最新文章

  1. python使用redis队列_【Python】python使用redis做队列服务
  2. Matlab神经网络十讲(7): Self-Organizing and LVQ Networks
  3. java ee cdi_Java EE CDI依赖关系消歧示例
  4. ef6 mysql_VS2015 + EF6连接MYSQL5.6
  5. 来一场蛋白和小分子的风花雪月
  6. eigen库安装_Python-OpenCV 1. 图像处理库OpenCV安装
  7. 【转】健康,运动,习惯
  8. Kardashev量表和AI:可能的床友
  9. python反编译exe
  10. LeaRun敏捷开发框架
  11. 音乐与现代计算机技术,计算机音乐技术在音乐教育中的应用.doc
  12. 【PHP基础学习】—PHP异步非阻塞的实现方法
  13. 线圆示例(Line Circle)
  14. python 热度图_keras CNN卷积核可视化,热度图教程
  15. Android studio 设置豆绿色
  16. 喜欢林肯公园(likin park)
  17. 前端3D开发,你需要了解的知识汇总
  18. Flutter Hero 实现共享元素转场动画
  19. 阿里巴巴区签约重庆,这些合作亮点你不得不知!
  20. Windows11 开机自动同步时间(开机时间不更新问题)

热门文章

  1. 安装 MySql5.7 详细教程,操作简单(Windows版本)
  2. python编写美颜算法
  3. 如何使用heic图片转换精灵,将heic转成JPG
  4. 可消费性设计 让软件贴近用户
  5. 中国央行数字货币DCEP——有增值空间吗?
  6. 简单介绍LC振荡电路的工作原理及特点
  7. 我的微信又被限制了!
  8. 3.28关于天保基建的因缘际会
  9. High Definition RP——概述
  10. vb6.0服务器组件安装失败,VB6.0安装失败解决办法