继前篇「WAMP 架设网页伺服器」后,这篇文章要来写如何在WAMP安装SSL的服务。程式开发人员会遇到一些像是金流部分的部分,这时候就不得不考虑SSL模式的测试。具体的作法就是在自己的主机建立CA认证伺服,由自己主机来当凭证中心。烘培参考下列几篇文章

从别人的文章来看,清楚的表示建立SSL的过程,可以分为「制作SSL凭证与公开金钥」与「编辑 Apache SSL 设定档」两部分

Part 1: 制作SSL凭证与公开金钥

开启dos模式命令列视窗

wamp_ssl_00 (複製).png

我试著参考「Enable HTTPS on WAMP2」的作法,直接使用wamp安装后包含的openssl.exe来进行建立SSL凭证与金钥

cd C:/wamp/bin/apache/Apache2.2.17/bin
openssl genrsa -aes256 -out pass.key 2048

却出现了下面的错误画面,烘培开始认定是64bit的原因所致

wamp_ssl_01 (複製).png

所以开了另外一台32bit来试,仍然出现了错误

wamp_ssl_08 (複製).png

后来我尝试从网路上直接下载缺少的dll,覆盖后再重试一遍,仍然无法解决错误。看来wamp所附赠的openssl.exe还是有问题,放弃了。我想就直接统一改用文章「在WAMP上启用SSL Module」所提到的win32 openssl代来替,从连结官网可以发现官方有提供32bit与64bit,这边我们就挑选下载和wamp同版本吧(烘培安装的是64bit,轻量版light)与Microsoft Visual C++ 2008 可转散发套件(x64)

wamp_ssl_02 (复制).png

在安装之前会提醒你必需有安装Microsoft Visual C++ 2008 可转散发套件。若尚未安装,请先安装刚刚所下载的Microsoft Visual C++ 2008再续继接下来的动作

wamp_ssl_03 (复制).png

安装x64版本有时候会卡住(x86倒是没有),似乎是浏览器(broswer)的关系,试著先关闭目前在使用的浏览器

安装完毕会让你选择希望捐助的金钱,这个就看大家的意思了(不小心被大家看到烘培把全部勾选取消的撷图XD)

wamp_ssl_05 (复制).png

正常来讲,安装OpenSSL后,会自动在win7建立一个叫OPENSSL_CONF的系统变数,内容值为刚刚所安装OpenSSL中的openssl.cfg,大家可以参考下图进行检查

wamp_ssl_06 (复制).png

如果没有发现这个变数,那么就自己建立一个吧!

wamp_ssl_07 (复制).png

为了确保系统变数的有效化,我们先进行「登出」,再「登入」,(XD,重开机也行),再重新来建立私钥的动作

cd C:/OpenSSL-Win64/bin
openssl genrsa -aes256 -out pass.key 2048

如果没有错误发生,程式会要求你输入私钥的自订密码二次,接著你会在C:/OpenSSL-Win64/bin发现多了一个名称「pass.key」的私钥档,我们要透过这个私钥来产生公钥与凭证。制作公钥指令如下

openssl rsa -in pass.key -out localhost.key

完成后你应该会在C:/OpenSSL-Win64/bin找到名称「localhost.key」的公钥,接下来制作凭证指令如下:

openssl req -new -x509 -nodes -sha1 -key localhost.key -out localhost.crt -days 999
 -config C:/wamp/bin/apache/Apache2.2.17/conf/openssl.cnf

制作凭证的过程中,系统将会要求你输入一些凭证资讯,烘培把要求的输入的资讯大概说明一下

  • Country Name (2 letter code) [AU]: TW
    #国家简码2码。输入TW。大陆同胞若不认同请直接关掉此文章,谢谢
  • State or Province Name (full name) [Some-State]: none
    #省分。因为台湾没有省,所以输入"无"
  • Locality Name (eg, city) []:Taichung
    #县市。烘培目前在台中
  • Organization Name (eg, company) [Internet Widgits Pty Ltd]: Powmana Studio
    #组识或公司。烘培的工作室
  • Organizational Unit Name (eg, section) []: Engineering Department
    #部门。爆肝的工程部
  • Common Name (eg, YOUR name) []: localhost
    #授权的名称(通常是网域名称)。因为我们要使用的是本地端,可以输入127.0.0.1或localhost
  • Email Address []: admin@localhost
    #电子邮件。通常名称会是admin@网域名称

上述动作完成后,我们将会得到「pass.key」、「localhost.key」、「localhost.crt」三个档案,第一部分的步骤结束

Part 2: 编辑 Apache SSL 设定档

首先在apache建立置放的资料夹(C:\wamp\bin\apache\Apache2.2.17\conf\ssl),并将所制作的公钥(localhost.key)与凭证(localhost.crt)复制到此资料夹。

wamp_ssl_10 (复制).png

(一) 编辑 httpd-ssl.conf

在www中建立一个https的资料夹(C:\wamp\www\https),接著使用笔记本开启apache的ssl设定档(C:\wamp\bin\apache\Apache2.2.17\conf\extra\httpd-ssl.conf),修改下面所提到的部分

1) 储存SSL快取位置
SSLSessionCache  "shmcb:C:/wamp/logs/ssl_scache(512000)"
2) https的根目录与错误讯息位置
DocumentRoot "C:/wamp/www/https"
ServerName localhost:443
ServerAdmin admin@localhost
ErrorLog "C:/wamp/logs/ssl_error.log"
TransferLog "C:/wamp/logs/ssl_access.log"
3) 凭证位置
SSLCertificateFile "C:/wamp/bin/apache/Apache2.2.17/conf/ssl/localhost.crt"
4) 公钥位置
SSLCertificateKeyFile "C:/wamp/bin/apache/Apache2.2.17/conf/ssl/localhost.key"
5) htaccess路由规则
<Directory "C:/wamp/www/https">
	SSLOptions +StdEnvVars
	Options Indexes FollowSymLinks MultiViews
	AllowOverride All
	Order allow,deny
	allow from all
</Directory>
6) 自订记录
CustomLog "C:/wamp/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
(二)编辑 httpd.conf

接著用笔记本开启apache的设定档(C:\wamp\bin\apache\Apache2.2.17\conf\httpd.conf),修改下列部分

1) 将原本前面的#移除,载入ssl设定档
Include conf/extra/httpd-ssl.conf
2) 将原本前面的#移除,启用ssl模组(可以使用wamp右下角介面去启用apache指定的模组)
LoadModule ssl_module modules/mod_ssl.so
(三) 编辑 php.ini

最后开启php的设定档(C:\wamp\bin\apache\Apache2.2.17\bin\php.ini),修改下列部分(可以使用wamp右下角介面去启用PHP扩展)

1) 将原本前面的;移除,载入openssl扩展
extension=php_openssl.dll

最后重新启用所有服务(Restart All Services),如果出现绿色的图示,表示SSL已成功启用

wamp_06 (复制).png

我们开启浏览器,输入「https://127.0.0.1」试看看结果,聪明的浏览器马上就察觉这个凭证是有问题,不过我们知道自己的凭证是安全的,就继续给他点下去

測試結果 (複製).png

因为当时建立凭证时,Common Name是输入locahost,这边我们透过127.0.0.1连结,所以将会有下面结果

測試結果2 (複製).png

改使用https://localhost连结就不会出现了,并将凭证加至安全范围范

wamp_ssl_12 (複製).png

但似乎只有IE有作用,Chrome仍然会有此凭证有疑虑

wamp_ssl_15 (複製).png wamp_ssl_16 (複製).png

大致上就这样完成SSL的安装了,虽然会有一些警示图示或讯息,但这并不会影响我们开发程式

相关文章