在 Apache + SSL 在 Win32

来源:互联网 发布:数据库设置主键自增 编辑:程序博客网 时间:2024/04/30 08:47

Apache + SSL Win32 的部分, 说真的实在不好找
你们可以参考一下 The Apache + SSL on Win32 HOWTO 的做法

当然照着上边做也没关系, 每个人有每个人的做法看个人吧试试看就知道了
虽然我是自己 Compile 来装的, 但我打字比较懒了点, Compile 教学的部分
请自行参考 OpenSSL mod_ssl 的内附檔 For Win32

基本上只要架好 Apache + SSL 其它如 ActivePerl, MySQL ,PHP 都可以慢慢加进来
Hunter 这里可以找到已经编译好的,视个人需要自行取用, 记得寄封Email谢谢人家喔!!

以下列出最快的安装方式供参考, 原理....自己看各套件的内文说明

安装所需档案
Apache_2.0.49-Openssl_0.9.7d-Win32.zip
openssl.cnf (
在那个 here 连结)

01.
建议最好先装 Apache 2.0.49 再来解压缩 Apache_2.0.49-Openssl_0.9.7d-Win32.zip,
记得解压缩后修改路径直接覆盖原来安装的档案上

02.
基本上您已经完成 Apache + mod_ssl + OpenSSL 的安装了
接下来得先开始设定您的 httpd.conf

找到 Listen 80 (不能批注掉喔, 至少知道你的网站是活的)
找到 LoadModule ssl_module modules/mod_ssl.so (不能批注掉喔, 要开 SSL 要靠这支 Modules )

03.
这里预设您除了正常网站外同一个 IP DomainName 上同时有 SSL 所以,
您除了设定您一般的网站路径外 VirtualHost 也要一并设定

04.
Name-Based 为例, 其它请依实际安装为准
记得这里的设定一定要跟上边的一样, 不然你的主网页会找不到喔

NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin
您的email
DocumentRoot "/
您网页的实际路径"
ServerName DomainName:80
ErrorLog logs/DomainName_error_log
CustomLog logs/DomainName_access_log common
</VirtualHost>

05.
再这边您可以稍微注意一下上边有 Include conf/ssl.conf 没错!!
接下来就是设定 SSL 要开的网页设定, 暂时先不教产生凭证 Key 的方法
既然再同一个目录先做设定的部分

找到 SSLMutex file:logs/ssl_mutex 并批注掉, Win32 上不支持此方式,
所以您可以改用 SSLMutex none 或是 SSLMutex default

接下来仍是 VirtualHost 的设定
找到 <VirtualHost _default_:443> 改用 <VirtualHost *:443>
DocumentRoot "/
您网页的实际路径"
ServerAdmin
您的email
ServerName DomainName:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

找到 #SSLCertificateChainFile conf/ssl.crt/ca.crt 把批注拿掉(要自己发给自己的话)

找到 #SSLCACertificatePath conf/ssl.crt 把批注拿掉(要自己发给自己的话)
增加 SSLCACertificateFile conf/ssl.crt/ca.crt

06.
到此已完成设定的基本工作了, 这里我稍微保留一下, 您可以暂时不用理会

找到 <IfDefine SSL> </IfDefine SSL> 我是批注掉的(懒得改启动设定), 如果您在
启动 Apache , 仍无法让您的 SSL 动作的话才跟着做这项

07.
接下来要开始制作认证的凭证准备阶段

请切换至 Apache bin 目录下, 把您下载的 openssl.cnf 置于此
 

用记事本打开openssl.cnf
并修改一下 [ CA_default ] 内的内容如下(既然是懒人法请跟着做喔!!其它倒是无关紧要)

dir = ssl
certs = $dir//certs
crl_dir = $dir//crl
database = $dir//index.txt
new_certs_dir = $dir

certificate = $dir//cacert.pem
serial = $dir//serial
crl = $dir//crl.pem
private_key = $dir//privkey.pem
RANDFILE = $dir//privkey.rnd

08.
依上述于 bin 目录下新增一个 ssl 目录

ssl 目录内新增 index.txt , 内容空白就好
ssl 目录内新增 serial 文件, 内容请填 01 就好

09.
切换回 Apache bin 目录下吧!!
这里我们要用命令提示字符 Win-DOS 窗口来设定, 所以为方便起见, 请设为 Apache bin 目录下
当然您要写成 *.BAT 省在窗口下打那些重复执行的指令也行, 假设我们自己要发给自己 CA 认证
当然 CAroot 一定是自己并加签给自己

10.
产生 CA Private Key -- 执行 openSSL genrsa -des3 -out ssl/ca.key 1024

1024
为使用 128-bit 加密, 并输入您的安全密码

11.
产生 CA Require 凭证需求 执行 openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr

输入您的申请书数据, 这里的可以用 "." 来当无数据输入使用, Domain Websit 在这并无特殊指定输入, 请依显示输入既可

12.
产生 CA Public Crt 凭证 -- 执行 openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt

预设是 30 天过期, 3650 是约 10

13.
接下来, 我们要为自己的 Server 或是个人加签凭证, 这里以 Server 为例

产生 Server Private Key -- 执行 openSSL genrsa -out ssl/server.key 1024

这里预设 Server Private Key 不设定安全密码以免无人值守时计算机关机重开无法启动 Apache (因为要密码才能启动)
这我倒没在 Win32 试过, Unix-Like 铁定会要求密码

14.
产生 Server Require 凭证需求 -- 执行 openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr

输入您的申请书数据, 跟上边的一样, 不过这里的 Domain Websit 在这最好填入您的 DomainName 主机全名(Host.DomainName)

15.
产生 Server Public Crt 凭证 -- 执行 openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt

输入您的 CA Private Key 安全密码完成制作手续

16.
现在您的 ssl 目录下已经有了必要的档案, 接下来开始复制到所需的路径下
请在 Apache 下之 conf 目录下建 ssl.crt ssl.key 2 个目录

ca.crt server.crt 复制至 conf/ssl.crt
server.key 复制至 conf/ssl.key

17. OK!!
万事具备了, 启动您的 Apache !! 不放心的话用 apache -t 看一下语法有无错误
启动后先用一般网页(http://DomainName http://Host.DomainName)开看看应该没问题

18.
再来试试 Port 443 (http://DomainName:443 http://Host.DomainName:443) 应该会告诉你是一个错误的请求如下
Bad request! Your browser (or proxy) sent a request that this server could not understand.
If you think this is a server error, please contact the webmaster.
Error 400
这时您可以直接使用 https://DomainName https://Host.DomainName 来进入 SSL 的网页了(后面呢...自己认证吧!!)

19.
注意喔!!右下角的金钥喔!!
因为您的计算机尚未取得 Server 的认证, 所以检验凭证时, 记得要安装 Server 凭证(server.crt)!!
又因为 Server 的认证未经授权单位认可, 所以检验凭证时, 记得要安装 CA 凭证(ca.crt)!!
您可以将 ca.crt server.crt 公开给人下载安装以取得拥有属于您自己的实验性网站的认证

 

我遇到的问题及解决办法:

Error Loading extension section x509v3_extensions
3760:error:02001002:system library:fopen:No such file or directory:./crypto/bio/
bss_file.c:104:fopen('ssl/index.txt.attr','rb')
3760:error:2006D080:BIO routines:BIO_new_file:no such file:./crypto/bio/bss_file
.c:107:
3760:error:0E064072:configuration file routines:CONF_load:no such file:./crypto/
conf/conf_def.c:197:
3760:error:0E06D06C:configuration file routines:NCONF_get_string:no value:./cryp
to/conf/conf_lib.c:329:group=CA_default name=email_in_dn
3760:error:2206506F:X509 V3 routines:V2I_ASN1_BIT_STRING:unknown bit string argu
ment:./crypto/x509v3/v3_bitst.c:133:section:,name:0x40,value:
3760:error:2206B080:X509 V3 routines:X509V3_EXT_conf:error in extension:./crypto
/x509v3/v3_conf.c:92:name=nsCertType, value=0x40
而我制造出来的sever.crt
里面是空的
没有任何的东西

 

检查一下openssl.cnf
#x509_extensions= x509v3_extensions
这行要批注

原创粉丝点击