安全证书 CA和Openssl那些事

栏目: 服务器 · 发布时间: 6年前

内容简介:本文摘自码农翻身,希望能更进一步的讲解证书以及网络安全。之前在网络上的通信都是明文,中间的交换机都可以截取、篡改数据包,于是加密算法便诞生了,当然这其中少不了数学家的智慧。

本文摘自 码农 翻身,希望能更进一步的讲解证书以及网络安全。

之前在网络上的通信都是明文,中间的交换机都可以截取、篡改数据包,于是加密算法便诞生了,

当然这其中少不了数学家的智慧。

从对称加密说起

在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!),

还有一个是位于米国的Bill

这俩哥们隔着千山万水,通过网络联系上了, 两个人臭味相投,聊得火热。

有一天, Bill 突然意识到: 坏了, 我们的通信是明文的, 这简直就是网络上裸奔啊,

任何一个不怀好意的家伙都可以监听我们通信,打开我们发送的数据包,窥探我们的隐私啊。

安全证书 CA和Openssl那些事

最容易想到也就是上面的方案,既然明文不行,那我就做一次加密,用密文发送。

重点在于

加密和解密算法是公开的,那个密钥是保密的,也就是对称加密算法

但是怎么保证密钥不被截取?仿佛回到了鸡生蛋蛋生鸡的问题上。

用非对称加密解决?

Bill 和 张大胖的通信无法加密,说话谨慎了不少, 直到有一天, 他们听说了一个叫做RSA的非对称加密算法,一下子来了灵感。

这个RSA算法非常有意思,它不是像之前的算法, 双方必须协商一个保密的密钥, 而是有一对儿钥匙, 一个是保密的,称为私钥,另外一个是公开的,称为公钥。

当然RSA的特性在于公钥加密过的数据,只能用私钥来解密。

所以说上述的聊天过程应该变成这样

安全证书 CA和Openssl那些事

非对称加密+对称加密

因为RSA算法比之前的对称密钥算法要慢上百倍,这样为了安全都不能愉快的聊天了。

但是可以把两者结合起来

(1) 我生成一个对称加密算法的密钥, 用RSA的方式安全发给你

(2) 我们随后就不用RSA了, 只用这个密钥,利用对称加密算法来通信

下面开始正式介绍证书

证书分类

根据秘钥对的产生方式,可将证书分为两类:签名证书和加密证书。

根据证书的用途,通常将证书分为SSL服务器证书、SSL客户端证书、代码签名证书、Email证书,时间戳服务器证书、OCSP服务器证书等。

根据文件格式,以下为Windows支持的证书格式

安全证书 CA和Openssl那些事

下图大致描述了SSL服务端证书的使用流程

安全证书 CA和Openssl那些事

Openssl

SSL(Secure Socket Layer) 安全协议是由 Netscape 公司首先提出,最初用在保护 Navigator 浏览器和 Web 服务器之间的 HTTP 通信 ( 即 HTTPS) 。后来 SSL 协议成为传输层安全通信事实上的标准,并被 IETF 吸收改进为 TLS(Transport Layer Security) 协议。 SSL/TLS 协议位于 TCP 协议和应用层协议之间,为传输双方提供认证、加密和完整性保护等安全服务。 SSL 作为一个协议框架,通信双方可以选用合适的对称算法、公钥算法、 MAC 算法等密码算法实现安全服务。

OpenSSL 是著名的 SSL 的开源实现,是用 C 语言实现的。

Openssl包括三大类命令,,分别是是常用命令、消息摘要和密码命令。

Standard commands
asn1parse         ca                ciphers           cms
crl               crl2pkcs7         dgst              dh
dhparam           dsa               dsaparam          ec
ecparam           enc               engine            errstr
gendh             gendsa            genpkey           genrsa
nseq              ocsp              passwd            pkcs12
pkcs7             pkcs8             pkey              pkeyparam
pkeyutl           prime             rand              req
rsa               rsautl            s_client          s_server
s_time            sess_id           smime             speed
spkac             srp               ts                verify
version           x509

Message Digest commands (see the `dgst' command for more details)
md4               md5               rmd160            sha
sha1

Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb
aes-256-cbc       aes-256-ecb       base64            bf
bf-cbc            bf-cfb            bf-ecb            bf-ofb
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb
des               des-cbc           des-cfb           des-ecb
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb
des-ofb           des3              desx              rc2
rc2-40-cbc        rc2-64-cbc        rc2-cbc           rc2-cfb
rc2-ecb           rc2-ofb           rc4               rc4-40
seed              seed-cbc          seed-cfb          seed-ecb
seed-ofb

接下来就让我们来用openssl自建CA实现SSL服务的证书

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.pem \
-subj '/C=AA/ST=AA/L=AA/O=AA Ltd/OU=AA/CN=AA/emailAddress=aa@aa.com'


openssl genrsa -out client1.key 2048
openssl req -new -key client1.key -out client1.csr \
-subj '/C=BB/ST=BB/L=BB/O=BB Ltd/OU=BB/CN=BB/emailAddress=bb@bb.com'


openssl x509 -req -days 365 -CA rootCA.pem -CAkey rootCA.key \
-CAcreateserial -CAserial serial -in client1.csr -out client1.pem

openssl verify -verbose -CAfile rootCA.pem client1.pem
mkdir private
openssl genrsa -out private/cakey.pem 2048
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
touch index.txt serial crlnumber 
echo 01 > serial

openssl genrsa -out httpd.key 2048
openssl req -new -key httpd.key -out httpd.csr
openssl ca -in httpd.csr -out httpd.crt -days 365


openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"

openssl pkcs12 -export -in admin.pem -inkey admin-key.pem -certfile ca.pem -out kube-admin.p12

openssl x509 -req -in haimaxy.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key
  -CAcreateserial -out haimaxy.crt -days 500
  
  
  
  
 
openssl genrsa  -out root-ca.key 2048

openssl req -new -key root-ca.key -out root-ca.req

openssl x509 -req -days 365 -signkey root-ca.key -in root-ca.req -out root-ca.cer
---
openssl x509 -noout -text -in root-ca.cer
----
openssl genrsa  -out server.key 2048

openssl req -new -key server.key -out server.req

openssl ca -config ./openssl.cnf  -in server.req -out server.cer

安全证书 CA和Openssl那些事 安全证书 CA和Openssl那些事

openssl x509 -noout -text -in kubernetes.pem

openssl rsa -noout -text -in myserver.key

openssl req -noout -text -in myserver.csr

openssl x509 -noout -text -in ca.crt

openssl verify selfsign.crt

openssl verify -CAfile ca.crt myserver.crt


以上所述就是小编给大家介绍的《安全证书 CA和Openssl那些事》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Spring技术内幕

Spring技术内幕

计文柯 / 机械工业出版社 / 2010-1-1 / 55.00元

内容简介: 本书是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔!Java开发者社区和Spring开发者社区一致强烈推荐。 国内第一本基于Spring3.0的著作,从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从木书中参透Spring框架的优秀架构和设计思想,而且还能从Spring优雅的实现源码中一窥......一起来看看 《Spring技术内幕》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码