您现在的位置是:首页 >学无止境 >Openssl Certificate网站首页学无止境
Openssl Certificate
序言
cuiyaonan2000@163.com
背景
SSL 证书也称为 SSL 服务器证书。在如今谷歌、百度等互联网巨头强制性要求网站 HTTPS 化的情况下, 网站部署 SSL 证书已然成为互联网的发展趋势。
SSL 证书的两大作用:数据加密和身份认证
服务器部署了 SSL 证书后,可以确保用户在浏览器上输入的信息,从服务器上查询的信息,在电脑到服务器之间的传输链路上是高强度加密传输的,是不可能被非法篡改和窃取的。同时向网站访问者证明了服务器的真实身份,此真实身份是通过第三方权威机构验证的。
SSL对于网站
提供身份验证
涉及到网络安全,身份验证是必不可少的。而安装 SSL 证书,网站就必须通过身份验证过程。通过后由权威第三方认证机构为用户颁发的“网络身份证”,实现实体的物理身份与网络的虚拟身份绑定,确保网站所有者在虚拟网络世界的真实身份。----验证网站的身份
防范网络钓鱼
钓鱼网站是由想要窃取用户信息的人创建的虚假网站,创建者很难获得有效的 SSL 证书。当用户在网站上看不到安全标志时,他们更有可能在不输入任何信息的情况下离开。所以有效的 SSL 证书可以防止对访问者的网络钓鱼攻击。----同上验证网站的身份
防止流量劫持
网络活动中,信息可能在传输过程被截获篡改后再转发,造成信息的不完整,在发生或可能发生信息篡改、丢失的情况时,网络服务提供者应当使用 SSL 证书对信息进行数字签名和完整性的保护,实现数据在服务器存储、传输和处理的过程中免遭任何非传授的或非预期的修改、插入、删除、重发、损毁等破坏。
提供数据加密
电子政务和电子商务涉及的机密或敏感信息在网络传输中存在被监听泄露的可能,网络服务提供者应当对这些信息进行加密。使用 SSL 证书对机密或敏感信息加密传输和保存,可以向访问者表明该网站上共享敏感信息是安全的,例如信用卡号、ID、电子邮件地址和密码。因此,SSL 加强了网站客户/访客之间的信任。
SSL对于网站浏览者
他们已连接到他们要访问的网站的正确的官方服务器(不是黑客经营的假冒产品),并且没有人可以拦截他们发送到网站的数据并将其用于邪恶目的。
openssl生成自签名证
网站证书是需要一些大的权威机构进行背书的,以确认网站拥有者的身份.否则谁都可以弄个证书来自证身份.
故此 SSL有如下的几个角色:
- CA:认证机构。有自己的证书,可以拿自己的证书给别人签名然后收钱,这个星球上的CA被几家说英语的人垄断了。在这里我们会虚拟出一个CA机构,然后用他来给自己的证书认证签名。
- (网站)证书 :发送给客户端的证书,其中主要就是公钥和其它信息的集合。是一个包含自己网站的公钥、认证、签名等信息的文件。
- (网站)私钥 :服务器留存的解密私钥(server)
SSL相关文件类型
格式 | 说明 |
---|---|
.crt .cer | 证书(Certificate) |
.key | 密钥/私钥(Private Key) |
.csr | 证书认证签名请求(Certificate signing request) |
*.pem | base64编码文本储存格式,可以单独放证书或密钥,也可以同时放两个;base64编码就是两条-------之间的那些莫名其妙的字符 |
*.der | 证书的二进制储存格式(不常用) |
生成CA的证书
# 生成CA认证机构的证书密钥key
# 需要设置密码,输入两次
openssl> genrsa -des3 -out ca.key 1024
# 去除密钥里的密码(可选)
# 这里需要再输入一次原来设的密码
openssl> rsa -in ca.key -out ca.key
# 用私钥ca.key生成CA认证机构的证书ca.crt
# 其实就是相当于用私钥生成公钥,再把公钥包装成证书
openssl> req -new -x509 -key ca.key -out ca.crt -days 365
# 这个证书ca.crt有的又称为"根证书",因为可以用来认证其他证书
主要通过CA的证书来给 网站的证书做签名, 道理很简单,就是用CA的公钥给网站的证书做签名,在实际访问网站的时候会,用户会拿着CA签名的信息去CA验证,这个是不是它办法的证书,cuiyoanan2000@163.com
生成网站的证书
# 生成自己网站的密钥server.key
openssl> genrsa -des3 -out server.key 1024
# 生成自己网站证书的请求文件
# 如果找外面的CA机构认证,也是发个请求文件给他们
# 这个私钥就包含在请求文件中了,认证机构要用它来生成网站的公钥,然后包装成一个证书
openssl> req -new -key server.key -out server.csr
如上生成网站自己的 私钥 和证书
CA证书加密或者签名网站证书
# 使用虚拟的CA认证机构的证书ca.crt,来对自己网站的证书请求文件server.csr进行处理,生成签名后的证书server.crt
# 注意设置序列号和有效期(一般都设1年)
openssl> x509 -req -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -days 365
Finally
最终我们有了如下的3把匙
- S
erver.key: 网站的私钥
server.crt: 网站的证书
ca.crt : ca的证书 用于验证服务端的政府
ca.key: ca的私钥
另文件格式是可以按照要求改动的,里面就是一串字符串.