本地环境开启HTTPS (wamp64)

前言:

踩坑了两天! 主要问题在于httpd-ssl.conf.

实际需求为:正式环境需开启Https访问,故将本地环境 Wamp 64( Apache + MySQL + PHP74 + Windows) 环境同步 wss:// 和测试其他逻辑代码。

自签证书工具

需下载对应wamp版本的OpenSSL证书版本
下载地址: openssl
选择 Light 版本 / 对应操作系统即可
安装完毕目录:C:\Program Files\OpenSSL-Win64\bin (后续以此为例)


创建必要证书

生成无密码版本

  1. 进入OpenSSL bin目录
cd C:\Program Files\OpenSSL-Win64\bin
  1. 创建证书
    此时bin目录新增 server.key 文件。
openssl genrsa -des3 -out server.key 2048
openssl rsa -in server.key -out server.key
  1. 进入Apache的Conf目录,新增文件: openssl.cnf
    此项很多教程没提及
    以此目录为案例:C:\wamp64\bin\apache\apache2.4.46\conf ,新建 openssl.cnf 文件
    域名请替换成你自己测试环境要用的, 否则将导致可能无法生效,其他无所谓
[ req ]
default_bits        = 2048
default_md          = sha256
distinguished_name  = req_distinguished_name
x509_extensions     = v3_req
prompt              = no

[ req_distinguished_name ]
C            = CN                  # 国家代码 (中国为CN)
ST           = State               # 省/州
L            = City                # 城市
O            = Organization        # 组织名称
OU           = Organizational Unit # 组织单位名称
CN           = www.域名.com        # 通用名称 (例如,域名)

[ v3_req ]
subjectAltName = @alt_names
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ alt_names ]
DNS.1   = www.域名.com
DNS.2   = 域名.com

  1. 生成无密码版本
    引入前面新建的 openssl.cnf 文件
openssl req -new -x509 -key server.key -out ca.crt -days 3650 -config C:\wamp64\bin\apache\apache2.4.46\conf\openssl.cnf
  1. 生成server.csr文件
openssl req -new -key server.key -out server.csr -config C:\wamp64\bin\apache\apache2.4.46\conf\openssl.cnf
  1. 生成server.csr文件
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
  1. 移动证书至指定目录
    server.crt
    server.key
    剪切到C:\wamp64\bin\apache\apache2.4.46\conf 位置,
    是的,只需要两个。

配置:httpd.conf

编辑: C:\wamp64\bin\apache\apache2.4.51\conf\httpd.conf 文件
前面的#号删除

	Include conf/extra/httpd-ssl.conf 
	LoadModule ssl_module modules/mod_ssl.so
	LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

配置:httpd-ssl.conf

这里是踩坑最多的地方
一遍一遍配置了,以为是路径引入问题,以为host问题等等,于是我刨了边源码,找到问题出在 Listen 443 这个首行也是最容易忽略的!
先说一般配置过程:同样的 配置项 - 替换你的东东

DocumentRoot "${INSTALL_DIR}/www"
ServerName www.你的域名.com:443
SSLCertificateKeyFile "C:\wamp64\bin\apache\apache2.4.46\conf\server.key"
SSLCertificateFile "C:\wamp64\bin\apache\apache2.4.46\conf\server.crt"

是的,只有4个地方。
但始终我一直重启Wamp服务都到黄色警告状态,给我都看麻了。
解决思路:
确保虚拟主机配置正确,可以尝试将配置文件中多余的部分注释掉,最小化配置以排除问题。例如清空httpd-ssl.conf 文件,只保留:

<VirtualHost *:443>
    DocumentRoot "网站目录"
    ServerName www.你的域名.com
    SSLEngine on
	SSLCertificateKeyFile "C:\wamp64\bin\apache\apache2.4.46\conf\server.key"
	SSLCertificateFile "C:\wamp64\bin\apache\apache2.4.46\conf\server.crt"
</VirtualHost>

排查着不对劲,到最后确定就是 httpd-ssl.conf 文件的问题,我一行一行删除,看到底哪里影响了,就是第一行我最信你了。。。 不显眼的 Listen 443

端口冲突

是我的其他服务占用端口

Windows命令:netstat -aon | findstr :443
查出: TCP [::]:443 [::]:0 LISTENING 7060

从netstat的结果来看,端口443已经被进程ID为7060的进程占用了。这意味着目前有一个服务正在监听443端口,这可能是导致Apache无法启动的原因。

再查: tasklist /FI “PID eq 7060”
查出: vmware-hostd.exe 7060 Services 0 55,504 K

端口443是由vmware-hostd.exe进程占用的。vmware-hostd.exe是VMware Workstation或其他VMware产品的相关进程,用于管理虚拟机和网络服务。这是导致Apache无法监听443端口的原因。

停止: net stop “VMware Host Agent”

wamp 它终于绿了 😭


配置:Virtual Host

先在本地host文件内新增你的域名: C:\Windows\System32\drivers\etc\hosts
再在 C:\wamp64\bin\apache\apache2.4.51\conf\extra\httpd-vhosts.conf 编辑你的虚拟端口

<VirtualHost *:443>
  ServerName www.你的域名.com
  ServerAlias www.你的域名.com
  DocumentRoot "你的网站目录"
	SSLEngine on
	SSLCertificateKeyFile "C:\wamp64\bin\apache\apache2.4.46\conf\server.key"
	SSLCertificateFile "C:\wamp64\bin\apache\apache2.4.46\conf\server.crt"
  <Directory "你的网站目录">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
	Require all granted
  </Directory>
</VirtualHost>

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值