apache+mysql+php+ssl服务器之完全安装攻略( 七 )


ServerName www.securedomain1.com
ErrorLoglogs/domain1.com-error_log
TransferLog logs/domain1.com-transfer_log# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A test
# certificate can be generated with `make certificate" under
# built time. Keep in mind that if you"ve both a RSA and a DSA
# certificate you can configure both in parallel (to also allow
# the use of DSA ciphers, etc.)
# Note that I keep my certificate files located in a central
# location. You could change this if you are an ISP, or ASP.SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you"ve both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog /usr/local/apache/logs/ssl_request_log"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"记住你有很多指令可以指定 。我们将在另一篇有关配置Apache的文章中讨论 , 本文只是一个入门性指南 。
生成证书这是如何生成证书的按部就班的描述 。为你的Apache服务器创建一个RSA私用密钥(被Triple-DES加密并且进行PEM格式化):# openssl genrsa -des3 -out server.key 1024请在安全的地方备份这个server.key文件 。记住你输入的通行短语(pass phrase)!你可以通过下面的命令看到这个RSA私用密钥的细节 。# openssl rsa -noout -text -in server.key而且你可以为这个RSA私用密钥创建一个加密的PEM版本(不推荐) , 通过下列命令:# openssl rsa -in server.key -out server.key.unsecure用服务器RSA私用密钥生成一个证书签署请求(CSR-Certificate Signing Request)(输出将是PEM格式的):# openssl req -new -key server.key -out server.csr当OpenSSL提示你“CommonName”时 , 确保你输入了服务器的FQDN("Fully Qualified Domain Name") , 即 , 当你为一个以后用https://www.foo.dom/访问的网站生成一个CSR时 , 这里输入"www.foo.dom" 。你可借助下列命令查看该CSR的细节:# openssl req -noout -text -in server.csr
将CSR发到一个CA现在你必须发送该CSR到一个CA以便签署 , 然后的结果才是可以用于Apache的一个真正的证书 。有两种选择:第一种 , 你可以通过一个商业性CA如Verisign 或 Thawte签署证书 。那么你通常要将CSR贴入一个web表格 , 支付签署费用并等待签署的证书 , 然后你可以把它存在一个server.crt文件中 。关于商业性CA的更多信息 , 请参见下列链接:Verisign - http://digitalid.verisign.com/server/apacheNotice.htm
Thawte Consulting - http://www.thawte.com/certs/server/request.html
CertiSign CertifiCADora Digital Ltda. - http://www.certisign.com.br
IKS GmbH - http://www.iks-jena.de/produkte/ca /
Uptime Commerce Ltd. - http://www.uptimecommerce.com
BelSign NV/SA - http://www.belsign.be你自己的CA第二种 , 你可以利用自己的CA并由该CA签署CSR 。你可以创建自己的认证中心来签署证书 。最简单的方法是利用OpenSSL提供的CA.sh或 CA.pl脚本 。比较复杂而且是手工的方法是:为你的CA创建一个RSA私用密钥( 被Triple-DES加密并且进行PEM格式化的):# openssl genrsa -des3 -out ca.key 1024请在安全的地方备份这个ca.key文件 。记住你输入的通行短语(pass phrase)!你可以通过下面的命令看到这个RSA私用密钥的细节 。# openssl rsa -noout -text -in ca.key而且你可以为这个RSA私用密钥创建一个加密的PEM版本(不推荐) , 通过下列命令:# openssl rsa -in ca.key -out ca.key.unsecure利用CA的RSA密钥创建一个自签署的CA证书(X509结构)(输出将是PEN格式的):# openssl req -new -x509 -days 365 -key ca.key -out ca.crt你可以通过下列命令查看该证书的细节:# openssl x509 -noout -text -in ca.crt准备一个签署所需的脚本 , 因为"openssl ca"命令有一些奇怪的要求而且缺省的OpenSSL配置不允许简单地直接使用"openssl ca"命令 , 所以一个名为sign.sh的脚本随mod_ssl分发一道发布(子目录pkg.contrib/) 。使用该脚本进行签署 。现在你可以使这个CA签署服务器的CSR , 以便创建用于Apache服务器内部的真正的SSL证书(假定你手头已经有一个server.csr):# ./sign.sh server.csr它签署服务器的CSR并且结果在一个server.crt文件中 。现在你有两个文件:server.ket和server.crt 。在你的Apache的httpd.conf文件中 , 如下使用它们:SSLCertificateFile /path/to/this/server.crt

推荐阅读