SSL证书:  是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。

ssl也是传输协议。

基于ssl协议开发的一款软件叫openssl

linux系统默认已经安装

基本功能

OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。
 
对称加密
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。

非对称加密

OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法椭圆曲线算法(EC)。DH算法一般用于密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
信息摘要
OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法。此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。

openssl

配置文件:

/etc/pki/tls/openssl.conf

dir=/etc/pki/CA      <<<指定CA工作目录

certs=$dir/certs    <<<指定撤销存储库的位置

crl_dir=$dir/crl      <<<证书撤销列表

database=$dir/index.txt  <<<已生成的证书信息的索引文件(此文件默认不存在,需要自己创建)

new_certs_dir=$dir/newcerts <<<新签发的证书的保存位置

certificate=$dir/cacert.pem <<<CA自己的证书名称

serial  = $dir/serial  <<<记录证书的序号,默认可以从1开始(此文件默认不存在,内容也不能为空,需要手动往里面添加一个数字)

crlnumber = $dir/crlnumber <<<吊销的证书序列号

crl = $dir/crl.pem<<< 吊销的证书的列表

private_key  = $dir/private/cakey.pem <<< CA自己的私钥的位置

RANDFILE   = $dir/private/.rand <<<随机数文件位置

x509_extensions = usr_cert  <<<扩展项

创建CA

    1.创建不存在的文件

        index,txt

        serial

   2.给自己(CA)创建证书

实现步骤

 1.创建那些不存在的文件

  1. [root@ ~]# touch /etc/pki/CA/index.txt
  2. [root@ ~]# echo "">/etc/pki/CA/serial
  3. [root@~]# cat/etc/pki/CA/serial
  4. [root@~]# cat /etc/pki/CA/serial

2.给CA创建证书

 (1)生成CA的私钥文件

  1. [root@ ~]# openssl genrsa -out /etc/pki/CA/private/cakey.pem 1024 <<<数字越大加密强度越大,然而小消耗系统资源也越多
  2. Generating RSA private key, bit long modulus
  3. .......++++++
  4. ....++++++
  5. e is (0x10001)

(2)从私钥文件中抽取公钥,并制作证书

-new:申请新的证书

-x509:证书版本号,509是给CA自己创建证书的准用选项

-key:指定私钥文件

-days:指定证书有效期

  1. [root@~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days -out /etc/pki/CA/cacert.pem
  2. You are about to be asked to enter information that will be incorporated
  3. into your certificate request.
  4. What you are about to enter is what is called a Distinguished Name or a DN.
  5. There are quite a few fields but you can leave some blank
  6. For some fields there will be a default value,
  7. If you enter '.', the field will be left blank.
  8. -----
  9. Country Name ( letter code) [XX]:CN <<<国家名字,只能用两个字母表示
  10. State or Province Name (full name) []:henan <<<所在省
  11. Locality Name (eg, city) [Default City]:zhengzhou <<< 所在市
  12. Organization Name (eg, company) [Default Company Ltd]:baidu 组织名(公司名)
  13. Organizational Unit Name (eg, section) []:nuomi <<<组织单位名
  14. Common Name (eg, your name or your server's hostname) []:www.baidu.com <<<公司网站域名(一定不能错,否则证书无效)
  15. Email Address []:@.com <<< 邮箱地址

给其他主机制作颁发证书的流程

1.客户端生成一个证书请求文件

2.客户端将证书申请文件发送到CA请求证书

3.检查证书请求文件中的信息的真伪,如果为真,则制作证书并颁发个客户端

实现步骤(以给apache颁发证书为例,服务器端10.220.5.67,客户端10.220.5.63

1.给apache创建私钥文件(用于存放私钥,公钥以及颁发的证书)

 (1)生成客户端私钥

  1. [root@apache ~]# mkdir /etc/httpd/ssl
  1. [root@apache ~]# openssl genrsa -out /etc/httpd/ssl/httpd.key
  2. Generating RSA private key, bit long modulus
  3. ........................................................++++++
  4. ........................................++++++
  5. e is (0x10001)

(2)生成请求文件

[root@apache ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -days -out /etc/httpd/ssl/httpd.req

  1. What you are about to enter is what is called a Distinguished Name or a DN.
  2. There are quite a few fields but you can leave some blank
  3. For some fields there will be a default value,
  4. If you enter '.', the field will be left blank.
  5. -----
  6. Country Name ( letter code) [XX]:CN
  7. State or Province Name (full name) []:henan
  1. Locality Name (eg, city) [Default City]:zhengzhou
  2. Organization Name (eg, company) [Default Company Ltd]:baidu
  3. Organizational Unit Name (eg, section) []:nuomi
  4. Common Name (eg, your name or your server's hostname) []:www.baidu.com
  5. Email Address []:@.com
    Please enter the following 'extra' attributesto be sent with your certificate request
    A challenge password []: <<<对生成的证书进行加密,这里省略
    An optional company name []:

 (3)查看生成的文件

  1. [root@apache ~]# ls /etc/httpd/ssl/
  2. httpd.key httpd.req<<此文件就是生成的请求文件

(4)将请求文件发送到服务器端

  1. [root@apache ~]# scp /etc/httpd/ssl/httpd.req root@10.220.5.67:/tmp
  2. The authenticity of host '10.220.5.67 (10.220.5.67)' can't be established.
  3. ECDSA key fingerprint is SHA256:Fi2Rlnl2uce8/7OiRG1JReD158iHVydpZ+bW+IgoutY.
  4. ECDSA key fingerprint is MD5:d0:96:1f:a9:83:fc:0a:bf:1f:20:1b:ec:4d:79:6e:7e.
  5. Are you sure you want to continue connecting (yes/no)? yes
  6. Warning: Permanently added '10.220.5.67' (ECDSA) to the list of known hosts.
  7. root@10.220.5.67's password:
  8. httpd.req 100% 700 321.8KB/s 00:00

2.服务端检查请求文件中的信息的真实性(在服务端操作)

  1. [root@e ~]# openssl ca -in /tmp/httpd.req -out /tmp/httpd.crt -days
  2. Using configuration from /etc/pki/tls/openssl.cnf
  3. Check that the request matches the signature
  4. Signature ok
  5. Certificate Details:
  6. Serial Number: (0x1)
  7. Validity
  8. Not Before: Nov :: GMT
  9. Not After : Jan :: GMT
  10. Subject:
  11. countryName = CN
  12. stateOrProvinceName = henan
  13. organizationName = baidu
  14. organizationalUnitName = nuomi
  15. commonName = www.baidu.com
  16. emailAddress = @.com
  17. X509v3 extensions:
  18. X509v3 Basic Constraints:
  19. CA:FALSE
  20. Netscape Comment:
  21. OpenSSL Generated Certificate
  22. X509v3 Subject Key Identifier:
  23. :DA:6B::2B:D1:3D:AD:::::6D:9D:A6:B0:AB:7B::
  24. X509v3 Authority Key Identifier:
  25. keyid::EF::9C::CD:D1::C2:FC:9E:C4::::9C:BB::0C:
  26.  
  27. Certificate is to be certified until Jan :: GMT ( days)
  28. Sign the certificate? [y/n]:y
  29.  
  30. out of certificate requests certified, commit? [y/n]y
  31. Write out database with new entries
  32. Data Base Updated

2)将生成的证书发送给客户端

  1. [root@ ~]# scp /tmp/httpd.crt root@10.220.5.63:/etc/httpd/ssl
  2. httpd.crt % .1MB/s :

ssl简介与openssl的使用的更多相关文章

  1. SSL及使用openssl实现CA

    TLS如何实现各种功能?数据如何加密在网络上传输? 网景(Netscape)公司在应用层和传输层加入了半层,把这个半层称之为SSL,SSL不是软件,可以理解是一个库,当http交给tcp层之前先通过s ...

  2. ssl协议,openssl,创建私有CA

    SSL是Security Socket Layer:安全的套接字层 他介于HTTP和TCP协议层之间 SSL是Netscape公司开发的,属于个人 TLS是标准委员会制定的 OpenSSL是SSL的开 ...

  3. SSL简介

    注:本文基于互联网内容整合而成,非原创.参考文章参加[7.参考资料].引用时请附上原文地址. SSL(Secure Socket Layer,安全套接字层)是位于可靠的面向连接的网络层协议和应用层协议 ...

  4. Cross platform GUI for creating SSL certs with OpenSSL

    Someone said: from : https://micksmix.wordpress.com/2012/08/09/xca-cross-platform-gui-for-creating-s ...

  5. 实战Tomcat配置SSL,使用openssl制作证书

    制作证书以及Tomcat配置 搭建openssl环境,下载openssl并设置环境变量方便命令行的使用: 修改openssl配置文件,设置dir目录,如设置dir=e:/temp/openssl_ca ...

  6. 数字证书认证这点事, SSL/TLS,OpenSSL

    1.概念 数字证书 HTTPS请求时,Server发给浏览器的认证数据,用私钥签名,并且告诉浏览器公钥,利用公钥解密签名,确认Server身份. 证书还会指明相应的CA,CA能确认证书是否真的是CA颁 ...

  7. SSL - 简介

    一.密码技术 要了解SSL协议,首先要了解:加密算法.消息摘要算法(又称为哈希算法Hash),数字签名等概念.这些技术每个都可以写出一整本的书,它们结合在一起,提供了保密性.完整性和身份验证的功能. ...

  8. OpenSSL编写SSL,TLS程序***

    一.简介 SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.TLS(Transport Layer Security)是 ...

  9. 面试题-------SSL协议简介

    SSL协议简介 SSL简介 Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之 ...

随机推荐

  1. 【原创】Bug管理操作规范个人经验总结

    1. 禅道简介 禅道是一个基于“敏捷开发”模式的软件开发全生命周期管理软件,在国内的软件开发公司里占据最大的份额,从大公司到小公司,都能适用. 笔者使用禅道多年,根据自己的经验总结了一套Bug管理的方 ...

  2. java构造函数和初始化

    1.如果构造函数的第一条语句是一条普通的语句.也就是说,不是对this()或super()的调用,那么java会插入一个隐式的super()调用,从而调用超类的默认构造函数.从该调用返回时,Java将 ...

  3. 关于极限精简版系统(RAMOS专用)的说明(FAQ)

    关于极限精简版系统(RAMOS专用)的说明(FAQ) 对RAMOS-er来说,系统精简唯一的目的就是RAMOS,精简只为RAMOS而存在.我更喜欢听到大家把精简系统用于RAMOS,这里才应该是他的主战 ...

  4. Linux系统编程——fcntl

    fcntl可实现对指定文件描述符的各种操作,其函数原型如下: int fcntl(int fd, int cmd, ... /* arg */ ); 头文件 #include <unistd.h ...

  5. qcom,msm8996-pinctrl.txt

    Qualcomm Technologies, Inc. MSM8996 TLMM block This binding describes the Top Level Mode Multiplexer ...

  6. 3、redis使用场景

    现代高并发复杂系统面临的挑战 现代系统随着功能的复杂化,各种各样需求层出不穷,面对愈加复杂话的业务系统.越来越庞大的用户群体,以及用户对体验的要求越来越高,性能就变得更加重要. 抛开代码逻辑.服务器性 ...

  7. Galaxy2D Game Engine 4.2

    Galaxy2D Game Engine 4.2 开发版  下载地址  D3DRender注意:1.下载后的压缩包请使用WinRar5.0打开.2.开发版包含了现在正在开发中的Galaxy2D游戏引擎 ...

  8. gradle项目

    gradle构建web项目 0.安装gradle http://services.gradle.org/distributions/ 下载对应版本:gradle-5.2.1-bin.zip 解压到自定 ...

  9. SSD 的介绍 -------转载

    本文转载自: http://www.sohu.com/a/258190629_494938   背景 SSD(Solid-State Drive)是目前正处于鼎盛时期的存储设备.相较于传统的硬盘存储器 ...

  10. 使用nodeValue获取值与a标签默认跳转的冲突问题

    今天看javascript DOM编程艺术(第2版)发现这样一个例子: 效果图: 完整代码: <!DOCTYPE html> <html lang="en"> ...