用Apache + mod_ssl的SSL证书
4 marzo 2008, 12:59 阿帕奇 , 系统 , 提示和技巧 3月4日,2008年,12:59
在这篇文章中,我带着我的一些旧的笔记就如何建立和安装SSL证书上的Apache Web服务器1.3 *采用mod_ssl。
对于更详细和完整的参考文档,在的位于http://www.modssl.org/docs /`和`openssl的man页。
后者的HTML版本是在http://www.openssl.org/docs/ 。
使用'工具箱'的openssl可以生成一个RSA私钥,后来联想到一个CSR(证书签名请求)。 让我们来看看如何生成的RSA私钥和分配的Apache Webserver。 下面的例子中是指分布的FreeBSD 6.0-RELEASE 的Apache 1.3.33,但很容易地扩展到任何其他的平台:
-
首先,你必须创建的RSA私钥,或1024位RSA密钥使用三重DES加密并存储在ASCII文本文件。PEM文件。
为了使更复杂的加密-结果- 更安全的关键,我们将使用一系列文件作为随机种子。
这些文件的任何先前`GZIP压缩:
$ openssl genrsa -des3 -rand file1:file2:file3:file4:file5 -out server.key 1024你将被提示输入密码。 重要的是保持你的密码因任何原因,在一个安全的地方,如果密码丢失,密钥生成将是完全没用! 不要小看这一建议,因为这样可能会导致错误的钱一笔可观的开支,产生一个新的证书,由于损失的私钥,证书颁发机构已接近(例如: 威瑞信 ), Thawte安全认证等),将需要重新释放以前的证书已经支付的金额支付。 这是一个金额超过-当我写- 欧元400.00 /年! -
因为你设置了由此产生的关键密码,每次重新启动Apache将进入或 - 更好 - Apache将通过一个简单的bash脚本,可以直接在httpd.conf中被调用:
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh脚本仅仅是类似于以下内容:
#!/bin/sh
echo "password123"#!/bin/sh如果你不希望使用任何密码(不推荐!)始终是从关键的三重DES加密的可能性。 如果你选择一个类似的解决方案,至少确保,关键是只能由root可读:如果其他人能够获得解密的私钥,证书将被吊销立即与它相关联的,原因很明显。 这就是说,这里是如何从加密密钥:
echo "password123"
$ openssl rsa -in server.key -out server.pem
现在,我们有私钥,我们可以生成CSR(证书签名请求)。 CSR可以采用两种方式:
- 您的CSR提交到证书颁发机构,这将核实申请人的身份,并颁发证书签署
- 使用CSR生成一个自产的证书
我们这里的第二个假设:其中CSR用于生成自产证书,不是由任何证书颁发机构确认的情况下,处理。 这种证书不提供任何保修的可靠性的导航,但在技术上等同于实际的证书,发送/接收数据时,浏览时,因此,允许的最大安全。
在创建CSR的过程中,将提出一些通过简单的文字提示信息。 然后,这些信息将是X.509证书属性。 关于“通用名称(例如,你的名字)”必须匹配的FQDN (完全限定域名)服务器将连接SSL保护的最重要的输入。 生成CSR命令如下:
$ openssl req -new -key server.key -out server.csr没有这一点,我们开始产生自我证书使用命令:
$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt证书从而产生$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt有效期为10年。
现在已经到Apache网络服务器的配置进行更改。 首先应确定移动目录的证书,在我们的例子:
/usr/local/apache/etc/ssl.crt/
/usr/local/apache/etc/ssl.key/
一旦移动证书,只要编辑httpd.conf文件,这样,在每次重新启动Apache加载,虚拟主机的设置,必须在SSL回应。 这是一个相当简单的一个标准端口443:
# SSL Virtual Hosts
<IfDefine SSL>
<VirtualHost _default_:443>
ServerAdmin webmaster@agliardi.net
DocumentRoot /usr/local/apache/share/htdocs
ServerName www.agliardi.net
ScriptAlias /cgi-bin/ /usr/local/apache/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/apache/etc/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/etc/ssl.key/server.pem
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/var/log/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine># SSL Virtual Hosts 这些指令将导致创建一个SSL虚拟主机www.agliardi.net和443端口上,您的网络服务器的默认IP地址进行访问。
您可以添加SSL虚拟主机,你需要的一切,但必须小心指定为他们每个人不同的端口!
除非你有一个完全专用的IP地址,为每个域,情况相当罕见。
<IfDefine SSL>
<VirtualHost _default_:443>
ServerAdmin webmaster@agliardi.net
DocumentRoot /usr/local/apache/share/htdocs
ServerName www.agliardi.net
ScriptAlias /cgi-bin/ /usr/local/apache/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/apache/etc/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/etc/ssl.key/server.pem
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/var/log/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
现在已经重新启动Apache,并指出在您的浏览器https://www.agliardi.net !














