关于 apache 的openssl 功能的启动

这两天因为ADOBE 的DPS订阅服务器需要https功能。

粗略搜索一下,发现一些早期资料说到什么需要找CA公司花钱认证购买的。然后忽然想到前段时间锤子提到的那个openssl,就去搜索了一番。

发现原来这才是主流嘛,而且apache自带了这个。甚至直接用的话都能发现这个功能是开启的,只不过证书是localhost的。

然后就去按照时间搜索资料。发现基于linux的比较多,win平台真是被鄙视了。也难怪啊。做服务器linux才是主流。

然后真正有用的是这个网址 http://www.2cto.com/os/201404/289690.html

步骤1:配置 APACHE以支持SSL

找到下面两行去掉前面的注释 #

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf

步骤2: 为网站服务器生成证书及私钥文件
C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl genrsa -out server.key 1024
生成一个server.key

步骤3:生成签署申请
C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl req -new -out server.csr -key server.key -config ..\conf\openssl.cnf
此时生成签署文件 SERVER.CSR

步骤4:使用OPENSSL生成CA私钥
C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl genrsa -out ca.key 1024
多出CA.key文件

步骤5:利用CA的私钥产生CA的自签署证书

C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ..\conf\openssl.cnf

步骤6:在bin目录下新建demoCA目录,在demoCA下新建index.txt,newcerts,serial 目录结构如下
demoCA
|–index.txt(文本,内容为空)
|–newcerts(文件夹)
|–serial(文本,内容为 01)

步骤7:准备为网站服务器签署证书
C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ..\conf\openssl.cnf
生成 server.crt文件

步骤8:将 server.crt server.key复制到 conf文件夹下

不过原文的步骤8有些问题,应该按照 http://blog.chinaunix.net/uid-28559065-id-4122318.html

 将\bin下面的 server.csr 、server.crt、server.key拷贝到httpd-ssl.conf中SSLCertificateFile和SSLCertificateKeyFile语句对应的目录下,

而且没有提到填写时,最需要注意的是 Common Name (eg, YOUR name) []:     需要按照http://showerlee.blog.51cto.com/2047005/1134956

不过,对于自行签署的证书,以及一些发证机构而言,其实还可以签署一种普适HTTPS证书,这种证书的Common Name一栏是 *.domain.tld 这样的形式,即其主机名部分可以是任意字符串,而只有域名部分是确定的。
当然,这种证书的安全性有一定的负面影响:由于一个证书可以验证整个域下面的所有服务器,一旦其被破解,则所有加密通讯也就同时失密了(当然,可以每台服务器使用自己的单独的证书),不过这个问题并不是太严重,通常还算是尚可接受的范围。另一个潜在的影响是,某些手机上运行的浏览器不能正确处理这种证书,不过这个问题仅限于希望给手机提供服务的网站。

所以我就填写了*.abc.com

然后 进入conf/extra文件夹中,找到一个httpd-ssl.conf的文件用文本工具打开它

按照http://www.markdream.com/server/apache-vhost-and-https.shtml

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

#SSLPassPhraseDialog builtin

#SSLSessionCache “shmcb:F:/xampp1/apache/logs/ssl_scache(512000)”
SSLSessionCache “shmcb:F:/xampp1/apache/logs/ssl_scache(512000)”
SSLSessionCacheTimeout 300

<VirtualHost *:443>
DocumentRoot “F:/abc”
ServerName new.abc.com:443
ServerAlias www.abc.com
SSLEngine on

SSLCertificateFile “conf/ssl.crt/server.crt”

SSLCertificateKeyFile “conf/ssl.key/server.key”

<Directory f:/abc>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
DirectoryIndex index.php index.html

</VirtualHost>

 

然后重启服务器,也就算完成啦。

哦对,记得打开服务器的端口。我真是因为防火墙端口结果苦恼了好久。

此条目发表在工作笔记分类目录。将固定链接加入收藏夹。