关于 HTTPS 的基本原理大家都已经不再陌生,今天和大家说说如何搭建一个支持 HTTPS 的服务端。 服务端的 HTTPSHTTPS 已经几乎成为了当前互联网推荐的通信方式,它能最大化保证信息传输的安全,从去年苹果的强制 HTTPS ,到如今各大网站都支持了 HTTPS。它会越来越普及。 之前写过几篇关于 HTTPS 原理的文章,有用户留言希望了解一些如何在服务端搭建 HTTPS 服务的内容,这次就和大家聊聊这个话题。 SSL 证书搭建一个 HTTPS 站点,第一步要做的就是申请 SSL 证书, 而且要在标准的证书颁发机构来申请。 当然,从技术上来说,你可以使用自签名证书,但自签名证书会被所有的浏览器视为不安全的证书,并且会给用户报错,就像这样:
所以,还是需要申请一个正规的证书的。 可申请证书的颁发机构有很多,比如 GoDaddy,Comodo,Verisign 等等。价格从一年几美金到几十美金不等。 我们就以 GoDaddy 为例,带大家了解一下流程。 在 GoDaddy 的首页有一个 Web Security 标签,点击这个标签后可以找到 SSL Certificates 选项:
点击进去, 就可以看到可选的几个证书形式,有单域名的,还有允许多个二级域名的等:
避免广告嫌疑,下面的价格信息略去了~,这里只给大家介绍流程,帮助大家了解。 证书服务商大家可以自行选择。 接下来,证书颁发机构会让你填写一个叫做 CSR 的东西, 如果大家搞 iOS 开发对这个应该不陌生,申请苹果开发者证书的时候大家也做过类似的事情。
CSR 全称 Certificate Signing request。 顾名思义就是用于申请证书必须的一些信息,在 Lunix 系统中,它可以通过命令生成(大多数的服务端应该都是基于 Linux 的,所以我们用它来作为例子): $ openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
openssl 命令,如果你的系统没有安装的话,可以通过包管理先安装。 需要把这里面的 生成成功后,可以用 cat 命令输出 $ cat yourdomain.csr 会在命令行输出 CSR 的内容,把这段内容复制到前面截图中的文本框中,然后点击生成就好了。 注意,这里的 与此同时,证书颁发机构在你提交 CSR 之后,会给你生成证书文件, Godaddy 会生成两个证书,一个是你站点的证书,一个是根证书。 把它们下载到你的服务器上面。 Apache 服务端配置证书准备好之后,我们要对服务端程序进行配置,让它支持 HTTPS。这里我给大家以 CentOS 7 操作系统, Apache 2.x 服务端程序为例。 Apache 的 HTTPS 配置文件一般在 /etc/httpd/conf.d/ssl.conf 这个位置。 用 vim 编辑器打开它, 然后加入这样一个节点: <VirtualHost *:443>
SSLEngine On
SSLCertificateFile /root/yoursite.crt
SSLCertificateKeyFile /root/yoursite.key
SSLCACertificateFile /root/rootcert.crt
ServerAdmin [email protected]
ServerName yoursite.com
DocumentRoot /var/www/html/
</VirtualHost>
这里用到了我们前面准备的证书和秘钥。 SSLCertificateFile 是你站点的证书, SSLCACertificateFile 是根证书, SSLCertificateKeyFile 是只保存在你服务器的私钥。 有了这些信息后,Apache 就可以正确的处理 HTTPS 请求了。 在这之前我们还需要在做最后一步操作, 编辑 /etc/httpd/conf/httpd.conf 文件, 这个是 Apache 的主配置文件, 加入这样一行: Listen 443
这个是让你的服务端同时监听 443 端口。 因为 HTTPS 的默认端口是 443, 所以这个设置是必须要有的。 一切都就绪后,重启你的服务器: systemctl restart httpd
然后再用浏览器输入 https://yoursite.com 访问你的站点时,就应该可以看到 HTTPS 验证成功的小锁头了。 防火墙设置如果配置都就绪,你重启了之后,依然不能正常访问,有可能是你的防火墙把 443 端口拦截了,把它打开: iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
结束目前成熟的 Web 服务程序都有对 HTTPS 很好的支持,只需要经过简单的配置,即可完成 HTTPS 服务器的搭建。 而 HTTPS 之所以相对性能消耗更大,是因为每次数据传输都需要进行加密和解密的操作。 作为 APP 开发者们,可能对服务端的技术了解的并没有那么深,可以把它作为一个备忘录,日后用到的时候再来看看。 如果你觉得这篇文章有帮助,还可以关注微信公众号 swift-cafe,会有更多我的原创内容分享给你~ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|