SSL 安全证书可以自己生成,也可以通过第三方的 CA (
Certification Authority )认证中心付费申请颁发。
SSL 安全证书包括:
1、CA 证书,也叫根证书或中间级证书。单向认证的 https , CA
证书是可选的。主要目的是使证书构成一个证书链,以达到浏览器信任证书的目的。如果使用了 CA 证书,服务器证书和客户证书都使用 CA
证书来签名。如果不安装 CA 证书,浏览器默认认为是不安全的。
2、服务器证书。必选。通过服务器私钥,生成证书请求文件 CSR ,再通过 CA
证书签名生成服务器证书。
3、客户证书。可选。如果有客户证书,就是双向认证的 HTTPS
,否则就是单向认证的 HTTPS 。生成步骤和服务器证书类似。
上面几种证书都可以自己生成。商业上,一般自己提供服务器或客户证书端的私钥和证书请求 CSR
,或向第三方机构付费申请得到通过 CA 证书签名的服务器证书和客户证书。
在操作前,最好将openssl.conf文件打开,查看其dir路径将其修改为dir = /home/wjoyxt/demoCA
/,否则下面的步骤会提示路径无法找到。
1、手动在当前目录/home/wjoyxt创建一个CA目录结构:
$
mkdir -p ./demoCA/newcerts
$ echo 01
> demoCA/serial
openssl req -new -x509 -days
1000 -key ca.key -out ca.crt -config
/etc/pki/tls/openssl.cnf
如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用上面这个命令来生成证书。( X.509是一种非常通用的证书格式)
二、制做服务器端的证书并用ca签名
1、生成服务器端rsa私钥
openssl
genrsa -out server.key 1024
2、生成服务器证书请求( CSR
)
openssl req -new -key
server.key -out
server.csr -config
/etc/pki/tls/openssl.cnf
需要依次输入国家,地区,组织,email。最重要的是有一个common
name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。
3、用生成的CA的证书为刚才生成的server.csr或client.csr文件签名
openssl
ca -keyfile ca.key -cert ca.crt -in server.csr -out
server.crt -config
/etc/pki/tls/openssl.cnf
三、制做用户的证书并用ca签名:(与生成服务器证书差不多)
需要注意的是:
这个certificate是BASE64形式的,要转成PKCS12才能装到IE上.所以还要进行转换一下
openssl
pkcs12 -export -in client.crt -inkey client.key -out
client.pfx
执行后提示如下:
Enter
pass phrase for client.key:
Enter Export Password:
# 设置client.pfx密码
Verifying - Enter Export
Password:
另:
client
使用的文件有:ca.crt,client.crt,client.key,client.pfx
server
使用的文件有:ca.crt,server.crt,server.key
证书安装及使用
把刚才生成的证书:根证书ca.crt和客户证书client.crt(client.pfx)安装到客户端, ca.crt安装到信任的机构,client.crt直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器。在IE中我们一般导入client.pfx证书,导入时会提示上面设置的密码。