X.509是一种非常通用的证书格式。所有的证书都符合ITU-T X.509国际标准,因此(理论上)为一种应用创建的证书可以用于任何其他符合X.509标准的应用。
x.5.09证书通常包含三类文件
key文件,密钥文件用于对发送和接收到的数据进行加密和解密
csr是签名请求文件,用于提交给CA进行签名
crt是ca签名后颁发的证书
pem是 用于导出和导入证书时的证书格式,通常是crt+key的结合
在内部使用时通常使用自签名的证书,简单来说是,就是自己通过一些工具如openssl或cfssl生成CA然后去进行签名证书,如果要对外提供公共服务,就需要去购买正规的证书颁发机构的CA进行签名。这里我们讨论的是自签名证书
首先我们需要生成CA根证书
1、生成CA 私钥,这里使用的是RSA算法
1 | openssl genrsa -out ca.key 2048 |
2、生成根证书请求文件csr
1 | openssl req -new -key ca.key -out ca.csr |
需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
3、自签名得到ca证书
1 | openssl x509 -req -days 36500 -in ca.csr -signkey ca.key -out ca.crt |
得到自签名的CA证书以后我们要用CA证书对用户的证书进行签名,这样才能正常使用
生成私钥 key文件
1 | openssl genrsa -out domain.rancher.com.key 1024 |
生成证书请求csr文件
1 | openssl req -new -key domain.rancher.com.key -out domain.rancher.com.csr |
需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
用CA证书签名用户证书
1 | openssl ca -in domain.rancher.com.csr -out domain.rancher.com.crt -cert ca.crt -keyfile ca.key |
注意: 此时会出错:Using configuration from /usr/share/ssl/openssl.cfg I am unable to access the ./demoCA/newcerts directory ./demoCA/newcerts: No such file or directory
解决方法:
1 | mkdir -p ./demoCA/newcerts |
然后会对应的ca证书和用户证书放到对应的web服务器的目录就可以了。
如果需要pem证书文件 ,就把证书文件(crt)和私钥文件(key)文件合并即可
1 | cat domain.rancher.com.crt domain.rancher.com.key > domain.rancher.com.pem |