SSL与证书

OpenSSL是一种常用的ssl实现

相当强大与完善,但是偶尔也会出现一些漏洞。
包含的X.509 证书标准,定义在RFC5280。

X509编码格式

  • PEM -Privacy Enhanced Mail :BASE64编码

    • 查看内容命令:
      openssl x509 -in certificate.pem -text -noout
    • 内容格式:
      文本方式打开后 以”—–BEGIN…”开头, “—–END…”结尾, 更多的用于linux 平台
  • DER -Distinguished Encoding Rules 二进制格式 ,java windows常用此格式

    • 查看内容命令:
      openssl x509 -in certificate.der -inform der -text -noout

文件拓展名

  • CRT

    linux系统中常见,编码不定,PEM编码居多,X509证书

  • CER

    常见于windows,编码不定,DER编码居多,X509证书

  • KEY

    通常用来存放一个公钥或者私钥 ,编码不定

    • 查看方法:
      1. PEM格式编码: openssl rsa -in mykey.key -text -noout
      2. DER格式编码: openssl rsa -in mykey.key -text -noout -inform der
  • CSR

    Certificate signing Request,证书签名请求。
    内附一枚公钥以及一些其他的附加信息,用于申请证书(生成时同时产生的私钥要自己保管好),例如IOS APP要上架的话就需要跟苹果申请开发者证书。

    • 查看方法: openssl req -noout -text -in my.csr DER编码如上加“-inform der”结尾
  • PFX/P12

    Predecessor of PKCS#12 ,采用DER编码,windows下使用居多,IIS同时将CRT和KEY存放在这个文件中,并用提取密码加密(是一个证书密钥库)。

    1. 提取查看方法:
      • openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
      • 执行后要求提取密码,for-iis.pem就是可读文本;
    2. 生成PFX的方法:
      • openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx -certfile CACert.crt
      • CACert.crt是CA(权威证书颁发机构)的根证书,有的话可通过 -certfile参数加入。
  • JKS

    Java Key Storage, java专属,keytool工具可用于将PFX转换为JKS,也可以直接生成JKS

    • 查看密钥库方法: keytool -v -list -keystore keystore (安卓sdk的开发版默认debug.keystore密码为android)

编码转换

  1. PEM转换为DER : openssl x509 -in cert.crt -outform der -out cert.der
  2. DER转换为PEM:openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
  3. key或csr转换: 同上,key将x509换成rsa,CSR将x509换成req

获取证书

1. 申请权威证书:

生成CSR:openssl req -newkey rsa:2048 -new -nodes -keyout my.key -out my.csr
将CSR交给权威证书机构,他们会对此证书签名,

2. 生成自签名证书:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
证书的签名一般用于验证来源的可信度,生成过程中Common Name必须要填上域名或者IP
自签证书浏览器会不认,个人的网站也可以考虑申请一些免费的数字证书。

以上内容参考:http://www.cnblogs.com/guogangj/p/4118605.html 并作部分补充。

你可能感兴趣的:(小术)