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 。