SSL证书越来越普遍,于是很多网站都开始配置HTPPS访问了,设计联盟今天在这里与大家分享通过https反向代理映射到http地址,可实现以https的方式访问普通的http网站,Win服务器Apache为网站配置HTTPS的方法。
1. 安装OpenSSL:
Windows下安装的wamp64中的Apache内置的OpenSSL是32位的,因此如果服务器主机之前没有额外安装过OpenSSL的话,需要先安装64位OpenSSL,安装地址如下:
http://slproweb.com/products/Win32OpenSSL.html
选择Win64 OpenSSL最新版本号的Light即可,安装时有一步需要勾选"Copy DLLs to Windows System directory"
参考:https://stackoverflow.com/questions/40017498/cannot-load-modules-mod-ssl-so-into-server
注:本节可以解决错误日志中出现的问题:Cannot load modules/mod_ssl.so into server: The operating system cannot run %1.
2. 证书的申请或生成:
事实上SSL证书是可以自己给自己颁发的,如果只是测试HTTPS下的一些问题,完全可以自己自建Root CA。具体可参考:
http://www.barretlee.com/blog/2016/04/24/detail-about-ca-and-certs/
但是阿里云有免费证书,因此上面的东西我也没试过。
以阿里云为例,通过域名可以免费申请到证书,包含四个文件:
并有如下安装指导:
3. 安装证书与常见问题:
配置conf/httpd.conf:
找到如下行并去掉#
#LoadModule ssl_module modules/mod_ssl.so
# Include conf/extra/httpd-ssl.conf
另外,要确认以下两行至少有一行是去掉#的:
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
配置conf/extra/httpd-ssl.conf
需要修改的关键行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
Listen 443 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4 SSLHonorCipherOrder on SSLProtocol TLSv1 +TLSv1.1 +TLSv1.2 SSLProxyProtocol all -SSLv3 SSLPassPhraseDialog builtin SSLSessionCache dbm:d:/wamp64/bin/apache/apache2.4.23/logs/ssl_scache " #SSLSessionCache " shmcb:d:/wamp64/bin/apache/apache2.4.23/logs/ssl_scache(512000) " SSLSessionCacheTimeout 300
DocumentRoot " d:/wamp64/www " ServerName tryservice.*******.com:443 #ServerAdmin admin@tryservice.*******.com ErrorLog " d:/wamp64/logs/apache/apache_error.log " TransferLog " d:/wamp64/logs/apache/access.log " SSLEngine on SSLCertificateFile " d:/wamp64/cert/tryservice/public.pem " SSLCertificateKeyFile " d:/wamp64/cert/tryservice/214************.key " SSLCertificateChainFile " d:/wamp64/cert/tryservice/chain.pem "
|
注意:
SSLSessionCache 二者取一即可,与httpd.conf中一致,如果一个导致重启Apache失败,可以试试另一个;
涉及到日志位置、证书位置,尽量使用物理路径(要加引号),使用相对位置很容易错误;
DocumentRoot, ServerName, ServerAdmin,一般来说应该与httpd.conf一致,但是要灵活处理,与证书的域名以及该域名对应网站的根目录对应起来。
文章源自 设计联盟 www.DesignLinks.cn 中国最具影响力的创意设计综合网站