什么是SSL证书

SSL证书是用于在WEB服务器与浏览器以及客户端之间建设加密链接的加密技术,通过配置和利用SSL证书来启用HTTPS协定,来爱护互联网数据传输的平安,寰球每天有数以亿计的网站都是通过HTTPS来确保数据安全,爱护用户隐衷。

Understanding SSL server certificates with Examples

SSL证书的作用

为您的网站访客、企业建设信赖和网络安全

加密隐衷数据。避免您访客的隐衷信息(账号、地址、手机号等)被劫持或窃取
地址栏平安锁。地址栏头部的“锁”型图表使您的访客释怀浏览网页,进步用户信任度
进步页面加载速度。进步用户体验,避免客户散失
达到PCI规范。SSL是PCI合规性的要害组成部分
平安身份认证。验证网站的真实性,避免钓鱼网站
进步SEO排名。进步搜寻排名顺序,为企业带来更多访问量
避免网页篡改。避免数据在运输过程中被篡改,爱护用户体验
晋升品牌形象。有利于企业取得更多利润,在与对手竞争中占据主动位置

Install and List Root CA Certificate on Linux

避免中间人攻打

中间人攻打(Man-in-the-MiddleAttack,简称"MITM攻打")是指攻击者与通信的两端别离创立独立的分割,并替换其所收到的数据,使通信的两端认为他们正在通过一个私密的连贯与对方直接对话,但事实上整个会话都被攻击者齐全管制。
1,信息篡改:当主机A和主机B通信时,都是由主机C为中介进行转发来实现的,A、B之间并没有真正上的间接通信,且他们也不会意识到这点。这样,主机C成为了一个中间人,不仅能够窃听A与B之间的通信,还能够对通信信息进行篡改再传递给单方。如此,C便能够将歹意信息传递给A、B以达到本人的目标。
2,信息窃取:当A、B通信时,C不被动去为其“转发”,只是把它们的传输的数据备份,以获取用户网络的流动,包含账户、明码等敏感信息,这是被动攻打也是十分难被发现的。

Understanding X509 Certificate with Openssl Command
understanding security certificate with examples
创立平安链接

SSL证书如何工作

浏览器和服务器之间通过SSL握手的形式疾速验证和替换密钥,实现平安加密
1,服务器将其非对称公钥的正本发送给浏览器。
2,浏览器创立一个对称会话密钥,并应用服务器的非对称公钥将其加密,而后将其发送到服务器。
3,服务器应用其非对称私钥对加密会话密钥进行解密以取得对称会话密钥。
4,服务器和浏览器之间构建平安通道,通过会话密钥加密和解密所有传输数据,只有浏览器和服务器晓得对称会话密钥,并且会话密钥仅用于该特定会话。如果第二天浏览器连贯到同一台服务器,则会创立一个新的会话密钥。

Get SSL server certificate from Server with Openssl s_client
Exploring SSL Connection with OpenSSL S_client Command

SSL证书意义:

认证服务:确认以后拜访的网页是其申明的网页。
数据完整性服务:确认相互传输的数据没有被批改过。
数据保密性服务:即数据的加密,没有密钥的第三方无奈获知数据的具体内容。
不可否认服务:从技术上保障网站和用户对其行为的认可。举个例子:在淘宝或者其余中央生产了,SSL证书会从技术上证实用户的确进行了生产,服务商的确收到了资金,以及服务商的确付出了与资金相匹配的服务。
公正服务:通过技术手段证实数据的有效性和正确性。

平安锁显示
所有平安连贯都有挂锁图标,但其中一些可能还有绿色地址栏。只有当一个网站应用特定类型的SSL证书(扩大验证证书)时,才会显示绿色地址栏。这种证书可用来证实该网站是由实在存在且非法的公司经营的。浏览器通过在URL左侧显示该公司的名称来认可该网站。当你看到绿色地址栏时,你就能够放松一下了——你是平安的。绿色地址栏无奈被仿冒, 它是网站身份和扩大可靠性的无可辩驳的证实

进步网页加载速度(HTTP/2)
咱们应用客户端(浏览器)通过互联网发动申请,服务端响应申请,到最初获取内容,这一过程都是建设在HTTP协定的根底上的。HTTP协定版本倒退从HTTP/0.9、HTTP/1.0、HTTP/1.1到当初的HTTP/2。 相比于HTTP/1.x,HTTP/2大幅度晋升web性能,进步网页加载速度,实现低提早和高吞吐量。

OpenSSl命令总览

语法格局:

openssl command [ command_opts ] [ command_args ]

罕用command:

version 用于查看版本信息

enc 用于加解密

ciphers 列出加密套件

genrsa 用于生成私钥

rsa RSA密钥治理(例如:从私钥中提取公钥)

req 生成证书签名申请(CSR)

crl 证书撤消列表(CRL)治理

ca CA治理(例如对证书进行签名)

dgst 生成信息摘要

rsautl 用于实现RSA签名、验证、加密和解密性能

passwd 生成散列明码

rand 生成伪随机数

speed 用于测试加解密速度

s_client 通用的SSL/TLS客户端测试工具

X509 X.509证书治理

verify X.509证书验证

pkcs7 PKCS7协定数据管理

openssl req用来生成自签证书

申请证书

SSL罕用于身份验证、数据加密等利用中,要应用SSL,咱们明码有本人的证书。数字证书个别要向业余的认证公司(如VeriSign)申请,并且都是免费的,某些状况下,咱们只是想应用加密的数据通信,而不在乎认证,这时就能够本人制作一个证书,本人制作一个证书,有两种形式,一种是Self Signed,另一种是本人制作一个CA,而后由这个CA,来公布咱们须要的证书。上面别离介绍这两个办法。

生成Self Signed证书

#生成一个key,你的私钥,openssl会提醒你输出一个明码,能够输出,也能够不输,

#输出的话,当前每次应用这个key的时候都要输出明码,平安起见,还是应该有一个密码保护

openssl genrsa -des3 -out selfsign.key 4096

应用下面生成的key,生成一个certificate signing request (CSR)

如果你的key有密码保护,openssl首先会询问你的明码,而后询问你一系列问题,

其中Common Name(CN)是最重要的,它代表你的证书要代表的指标,如果你为网站申请的证书,就要添你的域名。

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

生成Self Signed证书selfsign.crt就是咱们生成的证书了

openssl x509 -req -days 365 -in selfsign.csr -signkey selfsign.key -out selfsign.crt

Create self signed certificate with Openssl Command

#另外一个比较简单的办法就是用上面的命令,一次生成key和证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

4 Ways to Check SSL Certificate Expiration date

次要命令选项:

 -new    :阐明生成证书申请文件 -x509   :阐明生成自签名证书 -key    :指定已有的秘钥文件生成秘钥申请,只与生成证书申请选项-new配合。 -newkey :-newkey是与-key互斥的,-newkey是指在生成证书申请或者自签名证书的时候主动生成密钥,          而后生成的密钥名称由-keyout参数指定。[-newkey rsa:bits]当指定newkey选项时,前面指定rsa:bits阐明产生          rsa密钥,位数由bits指定。 如果没有指定选项-key和-newkey,默认主动生成秘钥。 -out    :-out 指定生成的证书申请或者自签名证书名称 -config :默认参数在ubuntu上为 /etc/ssl/openssl.cnf, 能够应用-config指定非凡门路的配置文件 -nodes  :如果指定-newkey主动生成秘钥,那么-nodes选项阐明生成的秘钥不须要加密,即不须要输出passphase. -text   :以文本的形式读取证书信息 -batch  :指定非交互模式,间接读取config文件配置参数,或者应用默认参数值

查看证书

查看KEY信息

openssl rsa -noout -text -in myserver.key

查看CSR信息

openssl req -noout -text -in myserver.csr

查看证书信息

openssl x509 -noout -text -in ca.crt

验证证书

会提醒self signed

openssl verify selfsign.crt

Get SSL server certificate from Server with Openssl s_client
Exploring Unable to get Local Issuer Certificate

因为myserver.crt是幅ca.crt公布的,所以会验证胜利

openssl verify -CAfile ca.crt myserver.crt

Understanding SSL server certificates with Examples
Exploring SSL cipher with Examples

不同格局证书的转换

个别证书有三种格局:

PEM(.pem)后面命令生成的都是这种格局,

DER(.cer .der) Windows上常见

PKCS12文件(.pfx .p12) Mac上常见

PEM转换为DER

openssl x509 -outform der -in myserver.crt -out myserver.der

DER转换为PEM

openssl x509 -inform der -in myserver.cer -out myserver.pem

PEM转换为PKCS

openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.crt -certfile ca.crt

PKCS转换为PEM

openssl pkcs12 -in myserver.pfx -out myserver2.pem -nodes

Converting CER CRT DER PEM PFX Certificate with Openssl

openssl测试证书
Check SSL Certificate with OpenSSL

Openssl提供了简略的client和server工具,能够用来模仿SSL连贯,做测试应用。

连贯到近程服务器

openssl s_client -connect www.google.com.hk:443

模仿的HTTPS服务,能够返回Openssl相干信息

-accept用来指定监听的端口号

-cert -key用来指定提供服务的key和证书

openssl s_server -accept 443 -cert myserver.crt -key myserver.key -www

Exploring SSL Connection with OpenSSL S_client Command

能够将key和证书写到同一个文件中

cat myserver.crt myserver.key > myserver.pem

应用的时候只提供一个参数就能够了

openssl s_server -accept 443 -cert myserver.pem -www

能够将服务器的证书保留下来

openssl s_client -connect www.google.com.hk:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > remoteserver.pem

转换成DER文件,就能够在Windows下间接查看了

openssl x509 -outform der -in remoteserver.pem -out remoteserver.cer

什么是证书链?

浏览器是如何鉴定信赖网站的SSL证书?其实当客户端拜访服务器时,浏览器会查看SSL证书并执行疾速验证SSL证书的真实性。

浏览器鉴定SSL证书身份验证的操作是依据证书链的内容。那么证书链是什么?

用户在获取SSL证书之前,首先要生成证书签名申请(CSR)和私钥。在最简略的迭代中,用户将生成的CSR产生到证书颁发机构,而后应用CA机构的根证书的私钥签订用户的SSL证书,并将SSL证书发回给用户。

当浏览器检测到SSL证书时,就会查看证书是由其中一个受信赖的根证书签名(应用root的私钥签名)。因为浏览器信赖root,所以浏览器也信赖根证书签名的任何证书。

而证书链是由两个环节组成—信赖锚(CA 证书)环节和已签名证书环节。信赖锚证书CA 环节能够对两头证书签名;两头证书的所有者能够用本人的私钥对另一个证书签名。这两者联合就形成了证书链。

Understanding SSL certificate chain

SSL和TLS的区别

SSL:(Secure Socket Layer,安全套接字层),位于牢靠的面向连贯的网络层协定和应用层协定之间的一种协定层。SSL通过相互认证、应用数字签名确保完整性、应用加密确保私密性,以实现客户端和服务器之间的平安通信。该协定由两层组成:SSL记录协定和SSL握手协定。

TLS:(Transport Layer Security,传输层平安协定),用于两个应用程序之间提供保密性和数据完整性。该协定由两层组成:TLS记录协定和TLS握手协定。

SSL vs TLS and how to check TLS version in Linux

什么是端口443?

您能够将端口443了解为用于爱护Web浏览器通信或HTTPS服务的Web浏览端口。

它将提供加密和通过平安端口的传输。因而,您通过这种连贯传输的数据具备很高的抵制第三方窃听和中断的能力。

此外,能够释怀地验证您近程连贯的服务器的身份。

建设连贯后,Web浏览器将在窗口的状态区域中显示诸如挂锁,未毁坏的钥匙等标记,以向您告诉无关平安连贯的信息。

只管端口443是HTTPS通信的规范端口,但HTTPS端口443也能够反对HTTP站点。如果站点应用HTTPS但无奈通过端口443加载,则解决所有未加密HTTP Web流量的端口80将染指以加载启用HTTPS的网站。

Exploring SSL Port with Examples