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.创建那些不存在的文件

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

2.给CA创建证书

 (1)生成CA的私钥文件

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

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

-new:申请新的证书

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

-key:指定私钥文件

-days:指定证书有效期

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

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

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

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

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

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

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

 (1)生成客户端私钥

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

(2)生成请求文件

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

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name ( letter code) [XX]:CN
State or Province Name (full name
) []:henan
Locality Name (eg, city) [Default City]:zhengzhou
Organization Name (eg, company) [Default Company Ltd]:baidu
Organizational Unit Name (eg, section) []:nuomi
Common Name (eg, your name or your server's hostname) []:www.baidu.com
Email Address []:@.com

Please enter the following 'extra' attributesto be sent with your certificate request
A challenge password []: <<<对生成的证书进行加密,这里省略
An optional company name []:

 (3)查看生成的文件

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

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

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

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

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

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

[root@ ~]# scp /tmp/httpd.crt root@10.220.5.63:/etc/httpd/ssl
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. 提示-bash: telnet: command not found的解决方法

    Linux centos 运行telnet命令,出现下面的错误提示: [root@localhost ~]# telnet 127.0.0.1 9501 -bash: telnet: command ...

  2. 精读《C++ primer》学习笔记(第一至三章)

    第一章: 重要知识点: 类型:一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算:所以说类定义,实际上就是定义了一种数据类型: >>和<<运算符返回其左侧的运算 ...

  3. WebService之客户端

    创建项目 File→New→Other→Web Services→Web Service Client中输入从服务端得到的wsdl链接: http://localhost:8080/WS_WebSer ...

  4. Centos7 kernel 内核升级 GPU显卡驱动程序编译安装

    1.NVIDIA官网下载相关显卡驱动 #在服务器上查看网卡型号 lspci -mm | grep NVIDIA   #在NVIDIA官网下载相应型号驱动程序 https://www.geforce.c ...

  5. MySQL面试题中:主从同步的原理

    主从同步的原理:1.主库上面有一个IO线程,从库上有一个IO线程和一个SQL线程,从库中的IO线程负责从主库读取binlog,并写入从库的中继日志:SQL线程负责读取并执行中继日志中的binlog,转 ...

  6. C#使用NPOI读写Excel的注意事项

    NPOI的基本使用参照:https://www.cnblogs.com/lixiaobin/p/NPOI.html 既存文档读取修改方法 *既存Excel文档修改保存注意使用FileMode.Crea ...

  7. 玩转MQTT-阿里云之MQTT使用

    引言 前两年买一款物联网控制板,当时把玩了一阵之后,验证了下串口通讯.MODBUS协议实现.TCP/UDP/DNS/MQTT通讯(基于GPRS)后,就放到角落里吃灰了呵. 最近收到阿里云的优惠推送,说 ...

  8. 负载均衡中的session保持

    什么叫负载均衡中的session保持 当我们需要做负载均衡时,服务端肯定有多台服务器,用户每次请求进来,会根据负载均衡算法被分配到某一台机器上,假设用户需要进行一段连续操作时,在第一台机器登陆后,下一 ...

  9. HTML5 script 标签的 crossorigin 和integrity属性的作用

    Bootstrap 4 依赖的基础库中出现了两个新的属性 <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.slim.m ...

  10. jmeter向ActiveMQ发送消息_广播/订阅(Topics 队列)

    问题描述:测试中需要模拟大量设备的消息上报到平台,但是实际测试中没有那么多设备,所以采取用jmeter直接往ActiveMQ模拟发送设备消息 解决思路:获取平台采取的是Queues还是Topics : ...