最近,微信小程序挺火,要做小程序网站域名必须要有ssl证书,形成https://的安全链接,我于是从万网上下载了一个免费的ssl证书,按照万网提供的安装方式怎么也安装不好,最后我这个Apache小白费了2天的时间,终于自己搞定了。
ssl证书文件说明:
1. 证书文件214776495000741.pem,包含两段内容,请不要删除任何一段内容。
2. 如果是证书系统创建的CSR,还包含:证书私钥文件214776495000741.key、证书公钥文件public.pem、证书链文件chain.pem。
以下是我自己摸索的证书系统创建的CSR的安装顺序:
( 1 ) 把下载的CSR三个文件放到同一个文件夹内,这里我们就命名为ssl文件夹;然后我们吧ssl文件夹移动到apache的目录内,我移动到了:C:\phpStudyB\Apache\conf 这个文件夹内。
( 2 ) 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到代码: #LoadModule ssl_module modules/mod_ssl.so, 把上面的内容前面的 # 号去掉,开启ssl模块,并在下面加入一行,以便载入一个ssl站点配置的文件vhostsssl.conf,总结起来就是:
把
#LoadModule ssl_module modules/mod_ssl.so
替换成
LoadModule ssl_module modules/mod_ssl.so Include conf/vhostsssl.conf
( 3 ) 然后在conf目录下新建一个文本文件,命名为vhostsssl.conf,该文件完整路径为:C:\phpStudyB\Apache\conf\vhostsssl.conf,并粘贴一下代码:
Listen 443 SSLPassPhraseDialog builtin SSLSessionCacheTimeout 300 #以域名app.sdclo2.com,网站根目录为D:\app.sdclo2.com为例: <VirtualHost *:443> DocumentRoot "D:\app.sdclo2.com" ServerName app.sdclo2.com SSLEngine on #加密套件如下(万网提供) SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!tNULL:!NULL:!FH:!EDH:!EXP:+MEDIUM SSLHonorCipherOrder on # 证书公钥配置 SSLCertificateFile "C:/phpStudyB/Apache/conf/ssl/public.pem" # 证书私钥配置 SSLCertificateKeyFile "C:/phpStudyB/Apache/conf/ssl/214776495000741.key" # 证书链配置 SSLCertificateChainFile "C:/phpStudyB/Apache/conf/ssl/chain.pem" <Directory "d:\app.sdclo2.com"> Options FollowSymLinks AllowOverride None Order deny,allow Allow from all </Directory> </VirtualHost>
( 4 ) 重启 Apache。
( 5 )输入网址:https://app.sdclo2.com/ 测试证书是否正确安装。
==========================================================================================================
以上5个步骤在phpstudy中可简化为两步:
1、开启phpstudy的ssl模块,在php_openssl前面打√,具体如下:
2 点击“其他选项菜单“→”“站点域名配置”,在弹出的对话框中补充填写https站点的配置信息。注意ssl证书的路径不要搞错。
Listen 443 SSLPassPhraseDialog builtin SSLSessionCacheTimeout 300 <VirtualHost *:443> DocumentRoot "D:\app.sdclo2.com" ServerName app.sdclo2.com SSLEngine on SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!tNULL:!NULL:!FH:!EDH:!EXP:+MEDIUM SSLHonorCipherOrder on SSLCertificateFile "C:/phpStudyB/Apache/conf/ssl/public.pem" SSLCertificateKeyFile "C:/phpStudyB/Apache/conf/ssl/214776495000741.key" SSLCertificateChainFile "C:/phpStudyB/Apache/conf/ssl/chain.pem" <Directory "d:\app.sdclo2.com"> Options FollowSymLinks AllowOverride None Order deny,allow Allow from all </Directory> </VirtualHost>
注意事项:
如果安全链接出现了服务器错误:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
那么我们就要查看服务器的错误原因,默认的apache的错误日志文件位于:C:\phpStudyB\Apache\logs\error.log.
我找到的原因为:
configuration error: couldn't perform authentication. AuthType not set!: /
这个错误原因在知乎上有解答:(https://www.zhihu.com/question/20240655/answer/62868315)
Apache版本如果小于2.4,就去掉Require all granted这行,如果大于2.4,就去掉allow from all这行。我的错误是前者。