私钥(private keys)可以用3DES和一个passphrase来保护其完整性,但是很重要的一点是如果存在加密服务器的keys, 每次启动服务器时就都需要输入passphrase。如果未使用passphrase, 则你必须绝对确保你的keys文件的安全性。
为web服务器创建RSA证书
要在httpd(8)里支持https通讯,你必须创建一个RSA证书。
代码: 全选
# openssl genrsa -out /etc/ssl/private/server.key 1024
代码: 全选
# openssl genrsa -des3 -out /etc/ssl/private/server.key 1024
代码: 全选
# openssl req -new -key /etc/ssl/private/server.key \
-out /etc/ssl/private/server.csr
你也可以自己签署这个key, 使用下面的命令:
代码: 全选
# openssl x509 -req -days 365 -in /etc/ssl/private/server.csr \
-signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt
即便你可能在不久后获得由其它认证结构颁发的签署证明,你也可能想先按照上面的方法创建一个自己签署证书以便测服务器的功能;这样在获得了其他机构签署的证书时再替换掉 /etc/ssl/server.crt文件,然后重新启动httpd(8)。
为web服务器创建DSA证书
创建一个DSA证书包含几个步骤,首先,用下列命令生成一个DSA参数组
代码: 全选
# openssl dsaparam 1024 -out dsa1024.pem
一旦你生成了DSA参数,你可以用下列命令生成一个证书和未加密的私钥的key:
代码: 全选
# openssl req -x509 -nodes -newkey dsa:dsa1024.pem \
-out /etc/ssl/dsacert.pem -keyout /etc/ssl/private/dsakey.pem
代码: 全选
# openssl req -x509 -newkey dsa:dsa1024.pem \
-out /etc/ssl/dsacert.pem -keyout /etc/ssl/private/dsakey.pem
上面是说明,下面我们实际操作一下:
1. RSA证书
我们先创建一个RSA证书
代码: 全选
# openssl genrsa -out /etc/ssl/private/server.key 1024
Generating RSA private key, 1024 bit long modulus
.....++++++
...............++++++
e is 65537 (0x10001)
代码: 全选
# openssl req -new -key /etc/ssl/private/server.key \
> -out /etc/ssl/private/server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:CN
State or Province Name (full name) []:BeiJing
Locality Name (eg, city) []:BeiJing
Organization Name (eg, company) []:gobsd.org
Organizational Unit Name (eg, section) []:gobsd.org
Common Name (eg, fully qualified host name) []:gobsd.org
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:
#
代码: 全选
# openssl x509 -req -days 365 -in /etc/ssl/private/server.csr -signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt
Signature ok
subject=/C=CN/ST=BeiJing/L=BeiJing/O=gobsd.org/OU=gobsd.org/CN=gobsd.org/[email protected]
Getting Private key
代码: 全选
# ls /etc/ssl/server.crt
/etc/ssl/server.crt
# ls /etc/ssl/private/server.key
/etc/ssl/private/server.key
#
代码: 全选
httpd_flags="-DSSL"
代码: 全选
reboot
浏览器里输入服务器地址http://192.168.8.13(访问80端口):
然后在浏览器里输入https://192.168.8.13(访问443端口):
IE提示你这不是一个来自有效结构的证书,无视,直接点击继续:
为web服务器创建DSA证书
DSA的证书创建过程类似于RSA,但是需要提醒大家的是: 你在IE里浏览时可能会看见这样的画面
怎么说呢,自己判别吧,应该是微软不承认这种自由的认证方式。不过没有问题,你的通讯已经被OpenSSL加密了,比裸奔强很多了。
此外用过虚拟主机的朋友应该知道,凡是需要ssl访问的都需要单独加银子,即使是仅提供OpenSSL至少每个月4-6$吧。