CA/PEM/DER/X509/PKCS

公钥传输给加密方,但是由于公钥无加密,在传输过程中容易被篡改替换,导致加密者使用的公钥变为攻击者的公钥,攻击者可以将数据截获解密。所以需要CA机构对公钥进行签名,确保公钥接收后可以验证公钥的拥有者。验证方法:CA使用私钥对发布者的公钥进行加密(称为签名),接收方收到后使用CA的公钥解密,就可以得到发布者的公钥和信息,可以验证公钥发布者。通常浏览器/操作系统会内置权威CA的公钥以便验证签名

X.509证书包含三个文件:key,csr,crt。

key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密

csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名

crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

标准是指定的存放密钥的文件标准,你只要知道PEM DER X509 PKCS这几种格式是可以互相转化的。

证书签名请求(CSR)

如果需要从certificate authority(CA)获取一份SSL证书, 你需要先生成一份certificate signing request(CSR). 一个CSR包含的主要信息是key pair中的公钥, 以及一些附加的信息.。在被签名时这些信息都会被塞进证书。

eg.

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

openSSL生成私钥和公钥例子:a

生成RSA私钥(无加密)

openssl genrsa -out rsa_private.key 2048

生成RSA公钥

openssl rsa -in rsa_private.key -pubout -out rsa_public.key

生成RSA私钥(使用aes256加密)

openssl genrsa -aes256 -passout pass:111111 -out rsa_aes_private.key 2048

加密私钥生成公钥需要提供密码