共计 5919 个字符,预计需要花费 15 分钟才能阅读完成。
什么是 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