2007年3月5日星期一

Apache下生成SSL证书

这是如何生成证书的按部就班的描述。

为你的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的一个真正的证书。

有两种选择:

第一种,你可以通过一个商业性CAVerisign 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

利用CARSA密钥创建一个自签署的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.ketserver.crt。在你的Apachehttpd.conf文件中,如下使用它们:

SSLCertificateFile /path/to/this/server.crt

SSLCertificateKeyFile /path/to/this/server.key

server.csr不再需要了。

这是如何生成证书的按部就班的描述。

为你的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的一个真正的证书。

有两种选择:

第一种,你可以通过一个商业性CAVerisign 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

利用CARSA密钥创建一个自签署的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.ketserver.crt。在你的Apachehttpd.conf文件中,如下使用它们:

SSLCertificateFile /path/to/this/server.crt

SSLCertificateKeyFile /path/to/this/server.key

server.csr不再需要了。

 Your sincere,

朱恒
2007-03-06

2 条评论:

匿名 说...

Love is Love.

匿名 说...

CSR-Generation Instructions
To generate a triple-DES encrypted key pair and a Certificate Signing Request (CSR):

Enter the following commands:

1. cd /usr/bin/ (/your path to openssl/)
Enter a passphrase when prompted to.
2. openssl genrsa -des3 -out server.key 1024
3. openssl req -new -key server.key -out server.csr