如何使用SSL证书

2021-09-06 10:49:57 浏览数 (1)

什么是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:

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

主要命令选项:

代码语言:txt复制
 -new    :说明生成证书请求文件
代码语言:txt复制
 -x509   :说明生成自签名证书
代码语言:txt复制
 -key    :指定已有的秘钥文件生成秘钥请求,只与生成证书请求选项-new配合。
代码语言:txt复制
 -newkey :-newkey是与-key互斥的,-newkey是指在生成证书请求或者自签名证书的时候自动生成密钥,
代码语言:txt复制
          然后生成的密钥名称由-keyout参数指定。[-newkey rsa:bits]当指定newkey选项时,后面指定rsa:bits说明产生
代码语言:txt复制
          rsa密钥,位数由bits指定。 如果没有指定选项-key和-newkey,默认自动生成秘钥。
代码语言:txt复制
 -out    :-out 指定生成的证书请求或者自签名证书名称
代码语言:txt复制
 -config :默认参数在ubuntu上为 /etc/ssl/openssl.cnf, 可以使用-config指定特殊路径的配置文件
代码语言:txt复制
 -nodes  :如果指定-newkey自动生成秘钥,那么-nodes选项说明生成的秘钥不需要加密,即不需要输入passphase.
代码语言:txt复制
 -text   :以文本的方式读取证书信息
代码语言:txt复制
 -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

0 人点赞