前提:我本地配的是phpstudy,有这个就够了。
1.生成服务器证书
1.进入dos命令
dos命令进入phpstudy安装目录里面的Apache的bin目录
例如:D:\programs\phpStudy\Apache\bin
2.设置Openssl环境变量
set OPENSSL_CONF=../conf/openssl.cnf

用来指明penssl.cnf的所在位置,不指明的话,下面执行签署服务器证书文件命令时会报错(WARNING: can’t open config file: /apache24/conf/openssl.cnf)
像这样的

3.生成密钥文件
openssl genrsa 1024 >ssl.key
(这是用128位rsa算法生成密钥,得到ssl.key文件)

4.生成证书请求文件
(1)执行生成文件命令
openssl req -new -key ssl.key > ssl.csr
这是用之前生成密钥文件(ssl.key)来生成证书请求文件ssl.csr

(2)根据提示填写各项参数
Country Name (2 letter code) [AU]:CN ISO国家代码
State or Province Name (full name) [Some-State]:SD所在省份
Locality Name (eg, city) []:YT所在城市
Organization Name (eg, company):test1公司名称
Organizational Unit Name (eg, section) []:test2组织名称
Common Name (eg, YOUR name) []:mywww.com申请证书的域名
Email Address []:admin@admin.com 管理员邮箱
输入密码,我写的是111111
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:111111
继续输入申请证书的域名
An optional company name []:myww.com
重要说明:company name与上面的Common Name一定要保持一致

5.签署服务器证书文件。
openssl req -x509 -days 5000 -key ssl.key -in ssl.csr > ssl.crt
这是前几步生成的密钥ssl.key和证书ssl.csr请求生成证书 ssl.crt,-days参数指明证书有效期,单位为天,
用openssl x509 -noout -text -in ssl.crt 可以查看证书的内容

2.配置Apache
将生成的三个文件移动到ssl.crt,ssl.csr,ssl.key移动到Apache\conf目录下面(个人习惯,也可以不移动,下面配置时路径写对就可以)
1.修改httpd.conf
取消下面两行的注释#
Include conf/extra/httpd-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
增加:Listen 443
监听443端口
2.配置vohosts
<VirtualHost *:443>
DocumentRoot "D:\SERVER\work\bbspre"
ServerName mytestbbs.com
<Directory "D:\SERVER\work\bbspre">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
SSLEngine on
SSLCipherSuite AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile D:\programs\phpStudy\Apache\conf\ssl.crt
SSLCertificateKeyFile D:\programs\phpStudy\Apache\conf\ssl.key
SSLHonorCipherOrder on
</VirtualHost>
重点说明:“<VirtualHost *:443>”,一定要是443,端口,
SSLEngine on
SSLCipherSuite AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile D:\programs\phpStudy\Apache\conf\ssl.crt
SSLCertifcateKeyFile D:\programs\phpStudy\Apache\conf\ssl.key
SSLHonorCipherOrder on
这几项是针对https的设置,其余参考普通配置就可以
配置完结、撒花
dos命令直接 httpd,没报错就说明成功了
3.意外
我执行时就出错了,“(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : AH00072: make_sock: could not bind to address [::]:443”

是443端口被占用了
通过netstat -a -o 命令找到占用端口程序的pid,在通过pid在任务管理中找到该程序,关闭,再执行httpd,真正完结撒花。
