首页 > 代码库 > 互联网安全机制及OpenSSL自建CA
互联网安全机制及OpenSSL自建CA
网络诞生的早期,能够接入网络的主机非常少,在当时基本上没有什么网络安全的概念,后来随着接入互联网的主机越来越多,之前的网络接入环境也越来越不适应后来网络的发展,俗话说“林子大了什么鸟都有”所以网络安全也越来越显得尤为重要,接下来这篇博文我们就浅谈一下网络安全的概念。
一:互联网安全的几大重要特征
网络安全几大重要标准:数据保密性;数据完整性;不可否认性。想要实现数据保密性需要对传输过程进行加密。要想让数据没有被非法授权,侵入,修改等破环行为,保护数据的完整性,需要对数据进行身份认证,而在实现这一系列的安全过程需要众多密码算法和协议。
二:密码算法和协议
对称加密:加密和解密使用同一密码。
非对称加密:加密和解密使用不同的密钥,分为公钥和私钥,公钥是从私钥里提取出来,公钥可以公开给其他人,私钥只能自己使用,用公钥加密就只能用对应的私钥解密,相对的用私钥加密就只能用对应的公钥解密。
单向加密:提取数据的特征码,特征码具有定长输出,和雪崩效应两个特性,一个微小的数据改动就会使提出来的特征码产生巨大的变化,这种特性对验证数据的完整性具有重要的作用。
现在互联网的安全传输过程就是有上面的几种加密算法实现的,下面就然我们浅析下互联网加密传输的过程。问:现在有两个人A和B。A现在想要和B进行通信,那A怎样让B知道自己是A且传过来数据没有被修改过呢?。
要想实现这个过程,A需用“单向加密”算法提取所要传输数据的特征码,然后A在用自己的私钥对所提出来的特征码进行“非对称加密”。此时把加密后的数据(假设为数据C),传输给B。B呢在利用A 的公钥(A的公钥每个人都可以有)进行解密,能解密那么A的身份就能获得验证,且解密出来的数据是A从传输数据里提出来的特征码(A是对数据的特征码进行加的密),然后B再用“单向加密”(相同算法)提取数据的特征码,如果特征码相同则证明数据了完整性。
问:那A传给B的数据怎样只有B才能看到呢?
A先用对称算法得出一段密码,在用这段密码把上面得出的数据C整体进行加密得出另一段密码,此时A在用B的公钥对这段密码进行加密得出结果放到数据后面一并发给B,如果B能用自己的私钥解开数据得到密码,说明是发给B的数据,此时B获得了A加密时用的密码,然后B在用相同的算法和获得密码得到数据C,剩下的过程就是重复第一问的过程了,这样整个安全传输过程就完成了,B也能解开A所发的数据(说明只有B才能解开数据的安全行得到验证),B也能验证A的身份(用A的公钥进行解密,身份性的到验证),B也能确保数据的完整(提取特征码,数据的完整性得到保证)。
问:有人会疑惑这样虽然能解决安全传输的一些问题,但这个过程的一个重要参与者公钥怎样确保他是合法的呢?
关于公钥的合法性我们只有通过有道德的机构来签发,这种机构我们都默认他是有道德的有公信力的,我们都认可的。当然你如果只在自己公司内部实现CA证书认证,让老板发个文在公司内部自己建一个CA签证服务也是可以的。
问:CA的合法性如何进行验证?
先用CA的公钥对CA进行解密,能够解密说明是CA颁发的,解密出来的是一段特征码,使用者再用同样的算法去计算CA的特征码,并比较CA的特征码是否相同如果相同表明CA没有被修改过。还要验证下CA的证书是否过期,是否吊销等。
总结一下:如果想保证自己的身份性,就用自己的私钥进行加密,如果想要保证数据的安全性就用对方的公钥进行加密。
三:SSL&TSL
上面简单介绍了互联网安全传输的一些机制,下面我们来了解下一种开源的安全传输标准SSL&TSL(Open Secure Socket Layer)。
SSL(Secure Socket Layer):安全套接层是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。在网景公司(Netscape)推出首版Web浏览器的同时提出SSL,IETF将SSL进行标准化,1999年公布了TLS标准文件。
传输过程:1)client发送一个会话请求并随机生成一串数字生成会话密钥,发送给server端。
2)server端发出响应信号,与客户端协商加密版本,如果浏览器与服务器支持的版本不 一致,服务器关闭加密通信,一个服务器生成的随机数,稍后用于生成"对话密 钥",确认使用的加密方法,比如RSA公钥加密,服务器证书。
3)当双方知道了连接参数,客户端与服务器交换证书(依靠被选择的公钥系统)。这些 证书通常基于X.509,不过也有支持OpenPGP为基础的证书。
4)服务器请求客户端公钥。客户端有证书即双向身份认证,没证书时随机生成公钥。
5)客户端与服务器通过公钥保密协商共同的主私钥(双方随机协商),这通过精心谨慎 设计的伪随机数功能实现,所有其他关键数据的加密均使用这个“主密钥”。
TLS:TLS利用密钥算法在互联网上提供端点身份认证与通讯保密,其基础是公钥基础设施(public key infrastructure,PKI)。不过在实现的典型例子中,只有网络服务者被可靠身份是经过验证,而其客户端则不一定。这是因为公钥基础设施普遍商业运营,电子签名证书通常需要付费购。---wikipedia
四:OpenSSL
1)OpenSSL定义
OpenSSL是套开放源代码的软件库包,实现了SSL与TLS协议。其主要库是以C语言所写成,实现了基本的加密功能。OpenSSL可以运行在绝大多数类Unix操作系统上(包括Solaris,Linux,Mac OS X与各种版本的开放源代码BSD操作系统),OpenVMS与Microsoft Windows。它也提供了一个移植版本,可以在IBM i(OS/400)上运作。
此软件是以Eric Young以及Tim Hudson两人所写的SSLeay为基础所发展的,SSLeay随着两人前往RSA公司任职而停止开发。 ---wikipedia
2)openssl建立私有CA服务器
openssl建立私有CA需要先自己生成密钥,自己进行自签证书。
生成密钥
自签证书
req: 生成证书签署请求
-news: 新请求
-key /path/to/keyfile: 指定私钥文件
-out /path/to/somefile:
-x509: 生成自签署证书
-days n: 有效天数
CA的初始化
3)节点申请证书
节点生成自己的密钥对
(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
生成证书签署请求
openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr
签署证书
因为本次实验CA 服务和节点在同一主机所以没有进行申请签署证书移送。
把证书交给签送者(下图是把证书放到windows的效果)
给其他节点进行签署需要把签署证书交给签署服务器
进行签署
好了这样两个证书就签好了
4)如何吊销证书
获取证书serial
openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subjectserial=01
根据节点提交的serial和subject信息来验正与index.txt文件中的信息是否一致
吊销证书
查看吊销后结果
结束:现在由于接入互联网的主机越来越多,再加上移动互联的到来,互联网安全显得越来越重要,虽然互联网设计者们在不断和破坏者对抗,以保证我们的上网环境但我们自身也要养成一个良好的上网习惯,尽可能保护好自己隐私信息。OpenSSL心脏出血漏洞希望不要再出现。
本文出自 “slayer” 博客,请务必保留此出处http://slayer.blog.51cto.com/4845839/1534131