第一步:先建立一个 CA 的证书
首先为 CA 创建一个 RSA 私用密钥,
系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。
生成 ca.key 文件,将文件属性改为400,并放在安全的地方。
你可以用下列命令查看它的内容,
利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构)
然后需要输入下列信息:
Locality Name: Bengbu 城市名称
Organization Name: Family Network 公司名称
Organizational Unit Name: Home 部门名称
Common Name:distinguish name
Email Address: sunstorm@263.net Email地址
生成 ca.crt 文件,将文件属性改为400,并放在安全的地方。
你可以用下列命令查看它的内容,
用下面的命令也可以生成没有密码保护的CA密钥和证书文件:
想给CA密钥加密码保护可以:
[root@rocketcnvm ssl]#mv ca.key.new ca.key
第二步:下面要创建服务器证书签署请求,
首先为你的 Apache 创建一个 RSA 私用密钥:
这里也要设定pass phrase。
生成 server.key 文件,将文件属性改为400,并放在安全的地方。
你可以用下列命令查看它的内容,
用 server.key 生成证书签署请求 CSR.
这里也要输入一些信息,和生成ca.crt的信息类似
至于 ‘extra’ attributes 不用输入。
“Common Name: Chen Yang 你的姓名”这条信息请你输入你的服务器的域名或者IP地址,
你可以查看 CSR 的细节
第三步:下面可以签署证书了
就可以得到server.crt。
将文件属性改为400,并放在安全的地方。
检查私钥是否于证书匹配,可以使用如下命令进行对比:四 其它
Enter pass phrase for ca.key:
86e24bf0156116c4f6617a8d980b3acd
[root@rocketcnvm ssl]# openssl x509 -noout -modulus -in ca.crt | openssl md5
86e24bf0156116c4f6617a8d980b3acd
补充
在CentOS6.3环境下,openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
,无法生效。改成openssl x509 -days 3650 -req -in server.csr -signkey server.key -out server.crt
即可
上面生成的证书有效期为10年(呵呵太长了点,一般三年就行了)
这时证书的相关文件就都已经生成好了。当前文件夹下应该有server.crt、server.csr、server.key这三个文件。
如果你是个完美论者,理所当然应该把文件丢到证书的“官方目录”中去,省的把文件胡乱放置以后找不着:
[root@www ~]# mv server.crt /etc/pki/tls/certs/
[root@www ~]# mv server.key /etc/pki/tls/private/
最后仅仅需要修改配置文件来指定证书路径:
找到如下一节:
# 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 new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/pki/tls/certs/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 /etc/pki/tls/private/server.key
另外,在/etc/httpd/conf.d/ssl.conf里面将SSLPassPhraseDialog builtin
修改为
SSLPassPhraseDialog exec:/etc/httpd/key.sh
编辑:/ect/apache2/key.sh
#!/bin/bash
echo ‘your pass phrase’ //在单引号里输入你的Server.key的密码
注意key.sh的权限755
重启Apache服务
这样每次启动apache时都可以不需要输入Server.key的密码了。