扫盲:
TLS:传输层安全协议 Transport Layer Security的缩写
SSL:安全套接字层 Secure Socket Layer的缩写
TLS与SSL对于不是专业搞安全的开发人员来讲,可以认为是差不多的,这二者是并列关系,详细差异见 http://kb.cnblogs.com/page/197396/
KEY 通常指私钥。
CSR 是Certificate Signing Request的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。
CRT 即 certificate的缩写,即证书。
X.509 是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。
X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:
PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
Apache和*NIX服务器偏向于使用这种编码格式.DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
Java和Windows服务器偏向于使用这种编码格式
Openssl生成自签名证书:
第一种方式:
通过openssl生成私钥
openssl genrsa -out server.key 1024
使用私钥生成自签名的cert证书文件,以下是通过参数只定证书需要的信息
openssl req -new -x509 -days 3650 -key server.key -out server.crt -subj "/C=CN/ST=mykey/L=mykey/O=mykey/OU=mykey/CN=domain1/CN=domain2/CN=domain3"
如果对上面参数具体的说明不太了解的,可以使用不带参数的方式,通过命令行步骤生成,参考第二种方式。
第二种方式(推荐):
通过openssl生成私钥
openssl genrsa -out server.key 1024
根据私钥生成证书申请文件csr
openssl req -new -key server.key -out server.csr
这里根据命令行向导来进行信息输入:
ps.Common Name可以输入:*.yourdomain.com,这种方式生成通配符域名证书
使用私钥对证书申请进行签名从而生成证书
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
这样就生成了有效期为:10年的证书文件,对于自己内网服务使用足够。
第三种方式:
直接生成证书文件
openssl req -new -x509 -keyout server.key -out server.crt -config openssl.cnf
ps.以上生成得到的server.crt证书,格式都是pem的。
还没有评论,来说两句吧...