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
加密私钥生成公钥需要提供密码