前提:我本地配的是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,真正完结撒花。