openssl证书生成

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
2
3
4
mkdir -p ./demoCA/newcerts
touch demoCA/index.txt #空文件,生成证书时会将数据记录写入
touch demoCA/serial
echo 01 > demoCA/serial #写入01,然后生成证书会以此递增

然后会对应的ca证书和用户证书放到对应的web服务器的目录就可以了。

如果需要pem证书文件 ,就把证书文件(crt)和私钥文件(key)文件合并即可

1
cat domain.rancher.com.crt domain.rancher.com.key > domain.rancher.com.pem