SSL

SSL - Secure Sockets Layer,当初应该叫"TLS",但因为习惯问题,咱们还是叫"SSL"比拟多.http协定默认状况下是不加密内容的,这样就很可能在内容流传的时候被他人监听到,对于安全性要求较高的场合,必须要加密,https就是带加密的http协定,而https的加密是基于SSL的,它执行的是一个比拟上层的加密,也就是说,在加密前,你的服务器程序在干嘛,加密后也一样在干嘛,不必动,这个加密对用户和开发者来说都是通明的.

OpenSSL - 简略地说,OpenSSL是SSL的一个实现,SSL只是一种标准.实践上来说,SSL这种标准是平安的,目前的技术水平很难破解,但SSL的实现就可能有些破绽,如驰名的"心脏出血".OpenSSL还提供了一大堆弱小的工具软件,弱小到90%咱们都用不到.

证书规范

X.509 - 这是一种证书规范,次要定义了证书中应该蕴含哪些内容.其详情能够参考RFC5280,SSL应用的就是这种证书规范.

编码格局

同样的X.509证书,可能有不同的编码格局,目前有以下两种编码格局.

PEM - Privacy Enhanced Mail,关上看文本格式,以"-----BEGIN..."结尾, "-----END..."结尾,内容是BASE64编码.

查看PEM格局证书的信息:openssl x509 -in certificate.pem -text -noout

Apache和*NIX服务器偏差于应用这种编码格局.

DER - Distinguished Encoding Rules,关上看是二进制格局,不可读.

查看DER格局证书的信息:openssl x509 -in certificate.der -inform der -text -noout

Java和Windows服务器偏差于应用这种编码格局.

相干的文件扩展名

这是比拟误导人的中央,尽管咱们曾经晓得有PEM和DER这两种编码格局,但文件扩展名并不一定就叫"PEM"或者"DER",常见的扩展名除了PEM和DER还有以下这些,它们除了编码格局可能不同之外,内容也有差异,但大多数都能互相转换编码格局.

CRT - CRT应该是certificate的三个字母,其实还是证书的意思,常见于*NIX零碎,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码,置信你曾经晓得怎么分别.

CER - 还是certificate,还是证书,常见于Windows零碎,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.

KEY - 通常用来寄存一个公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER.

查看KEY的方法:openssl rsa -in mykey.key -text -noout

如果是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,这里不写了)

证书编码的转换

PEM转为DER openssl x509 -in cert.crt -outform der -out cert.der

DER转为PEM openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

(提醒:下面例子是转换证书文件,如果要转换KEY文件也相似,只不过把x509换成rsa,要转CSR的话,把x509换成req)

未完待续
更多内容请拜访上面的源链接

  • 本文作者: 开发者首页
  • 本文链接: https://blog.kfzsy.com/linux-https-nginx.html
  • 版权申明: 本博客所有文章除特地申明外,均采纳 BY-NC-SA 许可协定。转载请注明出处!