天天看点

linux系统之openssl基本应用

Q:

  SSL是什么?

A:

  SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。

  SSL有什么优势?

  利用公开密钥技术的SSL协议已成为Internet上保密通讯的工业标准。安全套接层协议能使C/S应用之间的通信不被"中间人"窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。

  SSL具体特性有那些?

  SSL协议在应用层协议通信之前(SSL的工作区域是在应用层与传输层之间增加了半个层,原因是有些协议是不需要加密的)就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。通过以上叙述,SSL协议提供的安全信道有以下三个特性:

  1、数据的保密性

 信息加密就是把明文文件利用加密算法转换成密文的文件以实现数据的保密。加密的过程需要用到私匙来加密数据然后再通过公钥解密,虽然公钥是公开的,但没有了私钥,就无法解开加密后的数据。数据加密之后,加密过的数据可以公开地传送。

  2、数据的一致性

 加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。

  3、身份认证

 加密的另外一个用途是用来作为个人的认证,用户的公匙可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定,当对方接收到数据后,利用发送方的公钥进行解密后获取数据。

(注:公钥是从私钥中提取出来的)

   SSL与Openssl有什么关系?

   ssl是一种应用,表示安全的套接字层,是为那些明文应用提供加密机制的应用,openssl是一个实现该协议的库,当然还实现了其他很多东西,并且是open source,虽然Openssl作为SSL的一个库,但就其自身功能也是相当强大的。

二、Openssl基本组成与应用

1、组成  

libcrypto:通用功能的加密库

libssl:用于实现TLX/SSL的功能

openssl:多功能命令工具,用于生成密钥,创建数字证书,手动加密解密数据

2、常用命令

 1)、Message Digest commands(信息摘要算法也可以叫单向加密算法)

单向加密的算法有:md2、md4、md5、rmd160、sha、sha1  

命令:

  openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1][-out filename]

/path/to/somefile

作用:用于实现在网络通信中保证所传输的数据完整性

例:

<a href="http://s3.51cto.com/wyfs02/M02/22/4C/wKiom1MaLyng6iBnAASmY31UJK4088.jpg" target="_blank"></a>

2)、Cipher commands(对称加密)

  常用算法有:des、des3、base64等

 例:

1

2

3

4

5

6

7

<code>[root@localhost tmp]</code><code>#openssl enc -base64 -a -salt -in /etc/passwd  -out /tmp/passwd.cipher</code>

<code>[root@localhost tmp]</code><code># openssl enc -d -base64 -a -salt -in /tmp/passwd.cipher  -out /tmp/passwd</code>

<code>#-base64算法加密</code>

<code>#-d表示解密</code>

<code>#-a -salt表示加盐</code>

<code>#-in 对那个文件操作</code>

<code>#-out 输出到那里</code>

注:

用户认证:公钥加密,私钥解密。

数字签名:私钥加密,公钥解密。

3)、证书(x509格式):

公钥和有效期限

持有者的个人合法身份信息(一般是服务器主机名,可以同名)  

证书的使用方式

CA的信息

CA的数字签名

获取证书(CA)

1、先在自己的服务器上生成公钥与私钥

2、用公钥生成一个证书签署请求(CSR)

  组成: (组织机构名称,详细地址,邮件地址)

3、统一标准(x509)

4、当经过详细的认证之后会发一个证书(CRT)

4)、基于openssl实现CA发放(配置文件存于/etc/pki/tls/openssl.cnf)

   首先CA SERVER自签名

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<code>[root@localhost tmp]</code><code># cd /etc/pki/CA/</code>

<code>[root@localhost CA]</code><code># (umask 077;openssl genrsa 1024 &gt; private/cakey.pem )#生成私钥</code>

<code>[root@localhost CA]</code><code>#touch index.txt serial #创建索引与序号文件</code>

<code>[root@localhost CA]</code><code>#mkdir certs newcerts crl</code>

<code>[root@localhost CA]</code><code>#echo 01 &gt;serial #序号启始点</code>

<code>[root@localhost CA]</code>

<code># openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 #申请证书</code>

<code>You are about to be asked to enter information that will be incorporated</code>

<code>into your certificate request.</code>

<code>What you are about to enter is what is called a Distinguished Name or a DN.</code>

<code>There are quite a few fields but you can leave some blank</code>

<code>For some fields there will be a default value,</code>

<code>If you enter </code><code>'.'</code><code>, the field will be left blank.</code>

<code>-----</code>

<code>Country Name (2 letter code) [XX]:cn  </code><code>#国家</code>

<code>State or Province Name (full name) []:henan </code><code>#省份</code>

<code>Locality Name (eg, city) [Default City]:luoyao </code><code>#城市</code>

<code>Organization Name (eg, company) [Default Company Ltd]:essun</code>

<code>#公司名Organizational Unit Name (eg, section) []:essun.com  #组织</code>

<code>Common Name (eg, your name or your server's </code><code>hostname</code><code>) []:www.essun.com</code>

<code>#服务器名(此处特别重要)</code>

<code>Email Address []:[email protected]</code>

<code>#邮件地址</code>

客户端申请

#(umask 077; openssl genrsa -out www.key 1024)(生成密钥,保存至应用此证书的服务的

配置文件目录下)

#openssl req -new -key www.key -out www.csr (发起请求)

开始申请

把CSR文件传送到CA服务器,由CA服务器签置证书:

#openssl ca -in www.csr -out www.crt

然后将www.crt 传送回客户端。

吊销证书

#openssl ca -revoke /path/to/file.crt

本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1370129,如需转载请自行联系原作者

继续阅读