电脑技术学习

apache+mysql+php+ssl服务器之安装

dn001


#--------------------------------------------#;

#;SSL;Virtual;Host;Context;

#--------------------------------------------#;

#;General;setup;for;the;virtual;host;

DocumentRoot;/usr/local/apache/htdocs;

ServerAdmin;webmaster@securedomain1.com;

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;

SSLCertificateKeyFile;/path/to/this/server.key;

server.csr不再需要了。

上一篇 apache Tomcat 服务器配置

下一篇 apache+mysql+php+ssl服务器之完全安装攻略