博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows上为Apache配置HTTPS
阅读量:6179 次
发布时间:2019-06-21

本文共 4592 字,大约阅读时间需要 15 分钟。

1. 安装OpenSSL:

Windows下安装的wamp64中的Apache内置的OpenSSL是32位的,因此如果服务器主机之前没有额外安装过OpenSSL的话,需要先安装64位OpenSSL,安装地址如下:

选择Win64 OpenSSL最新版本号的Light即可,安装时有一步需要勾选"Copy DLLs to Windows System directory"

参考:

注:本节可以解决错误日志中出现的问题:Cannot load modules/mod_ssl.so into server: The operating system cannot run %1.

2. 证书的申请或生成:

事实上SSL证书是可以自己给自己颁发的,如果只是测试HTTPS下的一些问题,完全可以自己自建Root CA。具体可参考:

但是阿里云有免费证书,因此上面的东西我也没试过。

以阿里云为例,通过域名可以免费申请到证书,包含四个文件:

并有如下安装指导:

 

 

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

需要修改的关键行:

Listen 443SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4 SSLHonorCipherOrder on SSLProtocol TLSv1 +TLSv1.1 +TLSv1.2SSLProxyProtocol 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.*******.comErrorLog "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"
SSLOptions +StdEnvVars
##
SSLOptions +StdEnvVars
## BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "d:/wamp64/logs/apache/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  

注意: 

SSLSessionCache 二者取一即可,与httpd.conf中一致,如果一个导致重启Apache失败,可以试试另一个;

涉及到日志位置、证书位置,尽量使用物理路径(要加引号),使用相对位置很容易错误;

DocumentRoot, ServerName, ServerAdmin,一般来说应该与httpd.conf一致,但是要灵活处理,与证书的域名以及该域名对应网站的根目录对应起来。

4. 确认80端口与443端口没有被占用:

命令行输入命令:

netstat -aon|findstr "80"

得到输出:TCP    127.0.0.1:80        0.0.0.0:0              LISTENING      2448

说明80端口被进程号为2448的进程占用。同理可找到443是否被进程占用。

输入命令:

tasklist|findstr "2448"

可以查看该进程的具体信息,如果太多找不到,可以去任务管理器的进程选项卡找到该进程。若被一般进程占用可直接结束进程接触占用。若是SYSTEM占用,请参考以下解决方式。

80端口如果被SYSTEM占用,一般来说原因是开启了IIS服务,把默认网站删除或者更改端口即可解除占用;443端口被SYSTEM占用,打开任务管理器,在服务选项卡中找到RemoteAccess,停止服务即可解除占用(注意等正常启动Apache后再手动启动服务)。

 

 

注:本节可以解决错误日志中出现问题:

(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试。 : AH00072: make_sock: could not bind to address 127.0.0.1:80

(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试。 : AH00072: make_sock: could not bind to address 127.0.0.1:443

 

5. 重启Apache:

此时重启Apache,一般来说可以正常启动了。如果仍然无法启动,在任务管理器中的服务选项卡中找到以下两个服务:wampmysqld64, wampapache64

 

 

若是wampmysqld64没有运行,一般来说是因为服务器的MySQL服务在运行占用,在服务选项卡中找到MySQL服务停止,再重启Apache即可;

若是wampapache64没有运行,说明配置文件仍然有问题,首先停止Apache服务,在目录 ” D:\wamp64\bin\apache\apache2.4.23\bin” 中打开命令行,运行httpd命令,即可查看系统错误日志,针对问题解决。

 

6. 虚拟服务器的SSL配置:

配置conf/extra/httpd-vhosts.conf

ServerName tryservice.*******.com
Order deny,allowAllow from all
ProxyPass / http://127.0.0.1:4050/ProxyPassReverse / http://127.0.0.1:4050/
ServerName tryservice.*******.comSSLEngine onSSLProxyEngine onSSLCertificateFile "d:/wamp64/cert/tryservice/public.pem"SSLCertificateKeyFile "d:/wamp64/cert/tryservice/214************.key"ProxyRequests Off
Order deny,allowAllow from all
ProxyPass / http://127.0.0.1:4050/ProxyPassReverse / http://127.0.0.1:4050/

  

虚拟服务器的SSL配置,要根据上面的*80加上后面的*443,同样注意域名与其证书一一对应。 

 

7. 在同一服务器上为多个域名部署不同的证书:

配置conf/extra/httpd-ssl.conf

Listen 443##不需要更改 
##不需要更改
#需要增加的域名配置:
# General setup for the virtual hostDocumentRoot "d:/wamp64/www2"ServerName trydoctor.*******.com:443#ServerAdmin admin@tryservice.*******.comErrorLog "d:/wamp64/logs/apache/apache_error.log"TransferLog "d:/wamp64/logs/apache/access.log" SSLEngine on SSLCertificateFile "d:/wamp64/cert/trydoctor/public.pem"SSLCertificateKeyFile "d:/wamp64/cert/trydoctor/214************.key"SSLCertificateChainFile "d:/wamp64/cert/trydoctor/chain.pem"
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "d:/wamp64/logs/apache/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  

 

转载于:https://www.cnblogs.com/gyjerry/p/7090439.html

你可能感兴趣的文章
Java每天10道面试题,跟我走,offer有!(六)
查看>>
四种途径提高RabbitMQ传输数据的可靠性(二)
查看>>
c语言实现多态
查看>>
Linux 在 TOP 命令中切换内存的显示单位
查看>>
浏览器的加载与页面性能优化
查看>>
RabbitMQ学习总结(2)——安装、配置与监控
查看>>
Java基础学习总结(5)——多态
查看>>
shell: demo
查看>>
使用vc+如何添加特殊字符的控件(创世纪篇)
查看>>
Linux下的常用信号
查看>>
3.UIImageView+category
查看>>
2.UIView+category
查看>>
Android ImageLoader使用
查看>>
LDTP
查看>>
StringUtils工具类的常用方法
查看>>
linux下VNC安装与配置
查看>>
URL编码
查看>>
光模块及光纤知识(含分类,常用类型介绍)
查看>>
Apache 单IP多端口设置
查看>>
安装系统前的准备---vmware
查看>>