https折腾记
——以apache为服务器的网站怎样才能通过https协议访问

先说一下问题由来。由于google账户不能顺畅登录,所以我的chrome书签不能顺畅地在不同设备间同步。试了各种别的浏览器,都不好用。360浏览器没有ipad版,qq浏览器在ipad下面添加书签时老是导致死机,火狐浏览器宣布永远不开发ios版……一怒之下,我自己写了个书签管理小工具。这个小工具其实就是一个用javascript写的bookmarklet,可以把我需要的网址收藏到我自己的数据库,从而彻底摆脱浏览器的限制,实现跨平台、快浏览器地同步书签,吼吼。这个工具需要在被浏览的网页中嵌入一个我自己的js文件和表单(通过<script>和<iframe>标签),我悲催地发现,当被收藏的网址使用的是https协议时,由于我的网站用的是http协议,这两个外部文件无法被嵌入,工具失效。没办法,我只能再折腾一番,让自己的网站可以通过https协议访问。

https协议简介

参见《图解https协议》

操作步骤

说明:我的网站服务器用的是apache,操作系统是windows server 2012。不符合此情况的同学请谨慎参考。

1、加载相应模块。

确保apache安装路径下的modules文件夹中,有mod_ssl.so和mod_socache_shmcb.so两个文件。在httpd.conf配置文件中,加载这两个模块:

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

2、生成证书和密钥文件。

如何只是学习用,可以参照此文《在 wamp 环境中配置 ssl https》。

ssl证书通常是收费的,如果要在真实环境中使用,需要自掏腰包。否则,会出现下面的情形:

不是私密链接,链接不受信任(chrome下)

当然也有免费提供证书的公司,点击此处申请免费ssl证书

3、加载证书文件。

第二步会生成根证书、证书私钥、证书公钥三个文件,在Apache安装路径下,创建conf/ssl文件夹,并将这三个文件复制到该位置。

在httpd.conf中,引入httpd-ssl.conf配置文件:

Include conf/extra/httpd-ssl.conf

在httpd-ssl.conf中,设置公钥、私钥、根证书文件的路径:

SSLCertificateFile "C:\wamp\bin\apache\apache2.4.9\conf\ssl\2_www.nanerbang.com.crt"
SSLCertificateKeyFile "C:\wamp\bin\apache\apache2.4.9\conf\ssl\3_www.nanerbang.com.key"
SSLCertificateChainFile "C:\wamp\bin\apache\apache2.4.9\conf\ssl\1_root_bundle.crt"

4、重启服务器。

生命在于折腾,这是程序员的宿命。请双手合十祈祷服务器此时能正常启动。如果很不幸出问题了,那么请点击这里找出apache服务器无法启动的原因。

参考:

分享一个免费SSL证书申请网站,给网站开启https协议

Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程

用支付宝钱包扫描此二维码,为本文付款
本文标签:
httpsssl

官方公众号:
查看更多有趣的信息,请扫码关注男儿邦官方微信公众号nanerbangblog。

公众号id:
男儿邦blog

版权声明:
本文为站长原创,如需转载,请联系作者,并以超链接形式注明出处

本文地址:
http://www.nanerbang.com/article/49/