关于SSL证书生成解决方案

SSL是Netscape公司率先采用的网络安全协议。它是在传输通讯协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL普遍支持各类类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。linux

SSL证书包括:算法

1,CA证书,也叫根证书或者中间级证书。若是是单向https认证的话,该证书是可选的。不安装CA证书的话,浏览器默认是不安全的。浏览器

2,服务器证书,必选项。经过key,证书请求文件csr,再经过CA证书签名,生成服务器证书。安全

3,客户端证书,可选项。如有客户端证书则是双向https验证。服务器

以上全部证书均可以本身生成。网络

文件后缀工具

linux系统是不之后缀名来判断文件类型的,可是为了咱们可以更好地判断文件用途,因此添加各类后缀。如下是约定成俗的后缀。加密

*.key:密钥文件,通常是SSL中的私钥;server

*.csr:证书请求文件,里面包含公钥和其余信息,经过签名后就能够生成证书;网络安全

*.crt, *.cert:证书文件,包含公钥,签名和其余须要认证的信息,好比主机名称(IP)等。

*.pem:里面通常包含私钥和证书的信息。

服务器证书的生成

a) 生成服务器私钥

openssl genrsa -des3 -out server.key 1024

输入加密密码,用 128 位 rsa 算法生成密钥,获得 server.key 文件。

b) 生成服务器证书请求( CSR )

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

CSR( Certificate Signing Request)是一个证书签名请求,在申请证书以前,首先要在服务器上生成 CSR ,并将其提交给 CA 认证中心, CA 才能签发 SSL 服务器证书。也能够认为, CSR 就是一个在服务器上生成的证书。

在生成这个文件的过程当中,有一点须要特别注意,Common Name 填入主机名(或者服务器IP)。

c) 本身生成服务器证书

若是不使用 CA 证书签名的话,用以下方式生成:

openssl req -x509 -days 1024 -key server.key -in server.csr > server.crt

用服务器密钥和证书请求生成证书 server.crt , -days 参数指明证书有效期,单位为天。商业上来讲,服务器证书是由经过第三方机构颁发的,该证书由第三方认证机构颁发的。

若是使用 CA 证书签名,用 openssl 提供的工具 CA.sh 生成服务器证书:

mv server.csr newreq.pem

./CA.sh -sign

mv newcert.pem server.crt

签名证书后,可经过以下命令可查看服务器证书的内容:

openssl x509 -noout -text -in server.crt

可经过以下命令验证服务器证书:

openssl verify -CAfile ca.crt server.crt

客户证书的生成

客户证书是可选的。若是有客户证书,就是双向认证 HTTPS ,不然就是单向认证 HTTPS 。

a) 生成客户私钥

openssl genrsa -des3 -out client.key 1024

b) 生成客户证书签名请求

openssl req -new -key client.key -out client.csr

c) 生成客户证书(使用 CA 证书签名)

openssl ca -in client.csr -out client.crt

d) 证书转换成浏览器认识的格式

openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

证书列表

若是使用双向认证,就会有三个私钥和三个证书。分别是 ca.key, ca.crt, server.key, server.crt, client.key, client.crt ,以及给浏览器的 client.pfx 。

相关文章
相关标签/搜索