您的位置:首页 > 运维架构 > 网站架构

如何为自己的网站生成SSL证书

2009-09-04 10:10 197 查看
1. 首先保证安装了Openssl,并且能够在在终端执行它。

2. 为你的Apache(三倍-DES加密,PEM格式) 创建一个RSA私钥。

$ openssl genrsa -des3 -out server.key 1024

请将你的server.key文件备份,并且记住你输入得进入密码。能够通过以下的命令察看该文件:

$ openssl rsa -noout -text -in server.key

你也可以通过以下的命令创建一个没有加密的版本(不建议):

$ openssl rsa -in server.key -out server.key.unsecure

3. 通过RSA私钥文件来创建一个证书请求文件(PEM格式,CSR)

$ openssl req -new -key server.key -out server.csr

同样,你需要做一个备份,同时,在Openssl命令行提示输入CommonName的过程中,你必须输入一个FQDN(一个完全的有资格的域名),一个站点生成了一个CSR请求文件。可以通过以下的命令来查看CSR的详细内容:

$ openssl req -noout -text -in server.csr

4. 现在,你已经有了一个证书请求文件(CSR)了,你可以将此文件发送给一个认证机构来进行认证,当然会等一段时间并且花上一些钱。或者通过自己的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
通过以下的命令来察看经过认证的证书信息。

$ openssl x509 -noout -text -in server.crt

5. 现在,我们有了两个文件,server.key和server.crt ,下面就是在Apache中的httpd.conf文件配置:

SSLCertificateFile /path/to/this/server.crt

SSLCertificateKeyFile /path/to/this/server.key

请求文件不再需要了。

· 使用自认证机构:

最简单的就是通过CA.pl或者是通过CA.sh来对请求文件签名。

1. 为你的CA创建一个RSA私钥(三DES加密并且是PEM格式):

$ openssl genrsa -des3 -out ca.key 1024

备份并且记住你输入的访问密码。通过以下的命令可以查看私钥的详细信息:

$ openssl rsa -noout -text -in ca.key

你也可以创建一个非加密的PEM格式的私钥:

$ openssl rsa -in ca.key -out ca.key.unsecure

2. 创建一个自签名的证书文件(X.509 结构,输出为PEM格式):

$ openssl req -new -x509 -days 365 -key ca.key -out ca.crt

通过以下的命令查询:

$ openssl x509 -noout -text -in ca.crt

3. 准备一个脚本文件来对请求文件签名,Openssl不允许简单的通过openssl
ca来对请求文件签名。所以一个名为sign.sh的脚本文件(mod_ssl的子目录pkg.contrib下),是用这个来进行签名,不过还是建议使
用下面的方法进行签名。

4. 现在可以用这个脚本来进行签名了(刚才生成的CA的私钥和证书必须在这个脚本的目录下):

$ ./sign.sh server.csr

得到一个证书文件—〉server.crt.

· 怎样更改我的私钥的 pass-phrase 密码?

只需要简单的读取它并重新写入,同时指定它的pass-phrase ,通过以下的命令完成:

$ openssl rsa -des3 -in server.key -out server.key.new

$ mv server.key.new server.key

这时,你被要求两次来输入一个PEM 的pass-phrase,第一次要求输入旧密码,第二次要求输入新密码。

· 怎样可以消除Apache启动的时候的密码(pass-phrase)提示对话框:

原因是保存在你的私钥文件中的RSA私钥是一个一加密格式保存的。密码是保证能够读取这个密钥文件,如果保证你的服务器足够的安全的话,可以通过以下的命令消除:

1. 从RSA私钥中移除密码(同时保留源文件):

$ cp server.key server.key.org

$ openssl rsa -in server.key.org -out server.key

2. 保证私钥只能被root用户读取:

$ chmod 400 server.key

现在这是一个没有没有加密的密钥拷贝。在使用这个密钥文件的时候,将不会再提示你输入密码,然而,如果其他任何人的到这个私钥文件,他都可以在网络上模仿你。所以一定要保证这个密钥文件只能被root用户读取。

· 怎么验证私钥文件和我的证书文件是匹配的?

私钥文件包括一系列的数字。这些数字中的两个是“来自“公钥文件的,其他的是私钥的一部分。公钥的一些bit值被嵌入到你的证书中(我们可以从证书CSR中得到),通过以下的命令来查看输出的数字,同时比较这些数字:

$ openssl x509 -noout -text -in server.crt

$ openssl rsa -noout -text -in server.key

他们必须一致,因为它们都是很长的串,所以可以通过下面的方法来查看:

$ openssl x509 -noout -modulus -in server.crt | openssl md5

$ openssl rsa -noout -modulus -in server.key | openssl md5

这时比较两个短的数字串

$ openssl req -noout -modulus -in server.csr | openssl md5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: