Openssl安全与认证

SSL :secure socketslayer  安全的套接字层。这是网井公司为了给httpd传输协议加密在应用层和传输层加了一层库,实现传输加密用的,这个库能够在写程序的时候,调用这个库,完成加密解密功能,能帮着完成秘钥分发功能;如果不调用也可以正常的时候只使用httpd不进行加密,所以这个是公用的一个库。

http协议调用了SSL,则成为https。但是httpd和https在实现机制上差别非常大

通信安全的目标:

保密性:确保任何无关的第三方看到confidentiality

完整性:通信双方在通信过程中,整个报文不能产生信息丢失,一旦丢失要让接收人知道 integrity (分系统完整和通信完整)

可用性:加密后,让对方能够看到看懂 availablity

攻击类型:

威胁保密性的攻击:窃听、通信量分析

威胁完整性的攻击:更改、伪装、重放、否认

威胁可用性的攻击:拒绝服务(DoS)

解决方案

技术:加密和解密

服务(用来抵御攻击的服务,为了实现上述安全目标而特地设计的服务)

加密和解密:

传统加密方法:

替代加密算法

置换加密方法

现代加密方法:

现代块加密算法

服务:

认证机制

访问控制机制

秘钥算法和协议(用来实现秘钥的算法和相关协议,怎么交换秘钥)

对称加密    用于数据加密(保密性)

非对称加密(公钥加密),用于身份认证、秘钥交换,(但是数据加密可有不怎么用,比对称加密慢3个数量级)

单项加密   保证数据的完整性,一般是对数据求特征码

认证协议    秘钥交换协议常用DH,rsa

linux在系统上面为了实现安全有两个:OpenSSL(ssl) ,GPG(pgp)

OpenSSL 有三部分组成:

提供加密解密库,libencrpt库,专用于加密解密

实现SSL安全通信机制的库,libssl库

openssl多用途命令行工具

加密的算法和协议:

对称加密:

DES:date encryption standard,2003年就被破解

3DES:triple DES (3轮DES加密机制)以前的1000倍,

AES:advanced encryption standard  高级加密标准,安全程度很高(支持128bits,192位,256位,384位)

Blowfish

Twofish

IDEA

RC6

CAST5

对称加密特性:

1.加密和解密使用同一个秘钥,加密和解密算法可能不同

2.将原始数据分割为固定大小的块,逐个加密

对称加密的缺陷:

1.秘钥过多(服务器端与每个用户都是用一个专用的秘钥,用户一多,秘钥也就多了,秘钥相同,数据可被查看)

2.秘钥分发困难(秘钥交换算法)

3.无法实现数据来源确认

公钥加密:秘钥分为公钥和私钥 (加密工具是用公钥,解密工具使用私钥)

公钥:公开给所有人,pubkey,公钥是从私钥中提取出来的

私钥:通过工具创建,使用者自己留存,必须保证其私密性:secret key

公钥加密的算法:

RSA         即能签名又能加密

DSA       Digital Signature Standard  只能用于签名,不能用于加密解密  有时又叫DSS数字签名标准

ELGamal   数字签名算法

公钥加密特点:

用公钥加密的数据只能使用与之配对的私钥解密;用私钥加密的数据只有与之配对的公钥才能解密

公钥加密用途:

数字签名    主要让接受方确认发送方的身份

秘钥交换   发送方用对方的公钥加密一个对称秘钥,并发送给对方,以实现秘钥交换

数据加密(这个功能比较少用)

公钥加密的缺点:

不适合加密大数据,只适合小数据,(公钥解密耗费的时间比对称加密要费时500倍)

公钥加密数据的流程:

1.用户通过服务器给的公钥加密数据,发送给服务器;

2.服务器收到加密的数据后,用自己的私钥解密,解密成功则予以响应;

3.服务器通过单项加密对用户请求的数据求出特征码(这里使用了对称加密)

并用自己的私钥加密这个特征码,形成签名

服务器把(数据和数字签名)通过临时生成的秘钥,进行对称加密

之后用客户端的公钥生加密这个秘钥,并附加到这段数据加密后的后面,

4.用户收到数据后,先用自己的私钥解密“附属在最后面的(对称加密的秘钥)”,解密成功则是自己的,这个过程就是秘钥交换,这个时候客户端得到临时加密时的秘钥口令

5.之后客户端拿着秘钥口令解密(数据和数字签名)外面的对称加密层,解密成功说明是服务器发送的文件(也是自己请求的数据),完成保密性

6.之后客户端还要通过相同的加密算法单项加密数据生成一个特征码,这个特征码如果根服务器发送过来的解密后的特征码相同,则证明数据没有被篡改过,验证数据完整性成功,数据传输完成,完成完整性

通过这种方式,完成了完整性和保密性,同时完成了身份验证

不足,因为有的时候客户端可服务器端从来没交流过,需要互传公钥文件,但是这个时候可能会出现中间人,模拟两段通信,对着服务器端说我是客户端,对着客户端说我是服务器端,这样就不安全,这个家伙成了中间代理人,所有数据都要经过它,甚至它都可以进行修改,为了解决这个问题出现了CA

CA:为了保证通信双方都能口可靠的拿到对方的公钥,一种可靠的机制。

把公钥发送给CA机构,CA机构处理后给服务端,服务端把证书发送给客户端,并继续用自己的私钥加密数据后传输

在用户与服务之间通信,是怎样利用CA工作的:

客户端在接受数据前,首先拿到CA颁发机构的公钥:

之后用这个CA公钥解密服务器证书的数字签名,能解密说明证书来源可靠;

用同样的单向加密去计算数据得出特征码,之后与解密证书数字签名得到的附加的特征码比较,一样则证书完整性可靠;

之后检查证书的有效期限

验证要通信的对象的名字是否与证书一致

检查证书是否已经被吊销,没有吊销才能使用

CA把自己的公钥要提请给每一个人,CA先给自己发证,包含了CA自己信息和公钥,服务端只有拿到CA的证书才能够解密CA颁发给服务器证书,验证信息是否正确,验证证书是否正常

一个第三段冒充服务器端去向CA申请服务器端,怎么办?

一般证书办法机构会进行严格审核,这一块儿不太能成为问题

怎么能够可靠获得CA的公钥证书(用这个去解密CA颁发的公钥证书)

CA要本地交易,很少通过网络传输

那需要CA认证的这么多,怎么才能一一的去颁发呢?

首先有根CA,之后关联众多CA证书颁发机构公司,且CA的信任是可以传递的,且全球CA机构是有限的,且存在从属关系

CA给了微软一份,操作系统里面自带CA证书,且证书可信,(盗版除外)

不过证书想要伪装是非常难的

Linux上面是要自己手动加载CA的

如果私钥丢失,要向CA机构申请吊销证书,减少危害

单向加密:

只能加密,不能解密,提取数据指纹(提取特征码)

特性:定长输出,雪崩效应

功能:数据完成性校验

算法:

md5 :   message digest 5      128bits

sha1 :   secure hash algorithm1   160bits 定长输出

sha224, sha256, sha512

秘钥交换: (和单项加密相关)

IKE  internet key  exchange   互联网秘钥交换

常见实现方式(两种):

公钥加密

DH算法   (deffie-hellman)    ECDH(椭圆曲线DH)   ECDHE(临时椭圆曲线DH)

一般更倾向于使用DH,原因:使用公钥加密是在网上要传输密码的,虽然加密了,但是仍可以被暴力破解;而DH算法不用让密码在互联网上传送,能够更加安全。

vDH:

主机A和B通信

1、两个主机进行协商

A:         a,p协商生成公开的整数a,大素数p

B:              a,p

2、两主机各自根据数进行计算,并交换

A:  生成隐私数据:x (x<p),计算得出a^x%p(取模),发送给B

B:   生成隐私数据:y, (y<p)      计算得出a^y%p(取模),发送给A

3、解密

A:计算得出(a^y%p)^x = a^xy%p,生成为密钥

B:计算得出(a^x%p)^y = a^xy%p,     生成为密钥

在这个过程中其他用户可以看到,p,a,也能够看到取模后的值,但是这个过程反算x或y非常困难,从而达到加密目的

上面的图我们虽然说是非对称加密的流程,但是我们可以看的出,图中的流程包含了4个加密的组合才完成了安全的数据传输,而在这个过程最重要的过程就是CA的认证过程,那下面我们就来搭建一下数据库

PKI:public keyinfrastructure 公钥基础设施

签发机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库:这里是公钥存取的位置,任何人都可以下载

以上几个组件是维护CA认证系统正常运行的重要组件

数字证书:

最常用的数字证书:x509v3目前比较通行的版本 ,(这是国际标准组织定义的)v3是目前用的比较多的

证书格式的版本号

序列号    (已经发了多少个)

签名算法

发行者名称     (证书颁发者CA自己的信息,CA组织的名称,地址等

有效期

主体名称           持有者的名称        人或者机器名称,持有者的名称

在互联网访问时,https://www.zou.com/     这个路径名称和服务器证书持有者的名称要保持一致,否则证书不可信

主体公钥            持有者的公钥(持有者把自己的公钥发送给CA机构制作的,这个位置就是放的发送过来的公钥)

发行者的唯一标识        CA的id

主体的唯一标识         持有者的id

扩展信息

证书的基本约束

使用策略

密钥的使用限制

发行者的签名          CA数字签名(首先CA机构会把上面的所有信息进行单向加密的出特征码,之后会拿CA自己的私钥加密刚才单向加密的特征码,从而形成数字签名并附加在后面,用来生成发行者的签名)

基于SSL的通信:

SSL握手所做的的工作(主要有三步):

客户端向服务气短索要并验证证书

双方协商生成“会话密钥”

双方采用“会话密钥”进行加密通信

SSL handshake Protocol  的工作流程(分为4个阶段)

第一阶段:clientHello

客户端与对方发送Hello,发送随机谁,发送加密请求,向服务器发送自己所支持的协议版本,比如tls1.2

客户端生成一个随机数,稍后用互生成“会话秘钥”

客户端说明自己支持的加密算法,比如AES、RSA

客户端说名支持的压缩算法

第二阶段:serverHello

服务器开始回应,也发送hello,与随机数

服务器确认使用的加密通信协议版本,比如tls1.2,如果服务器端不支持客户端的协议版本,则byebye,断开

服务器端生成一个随机数,稍后用于生成“会话秘钥”

服务器发送自己的证书

第三阶段:

客户端验证服务器端证书,确认无误后取出其公钥  (两端互相发证书,并对两端进行身份验证是理论验证,(初加密狗,网银验证外))

发送以下信息给服务端:

一个随机数,用于加密    (这些随机数来来回回,混合在一起就成了没有规律的随机数了)

编码变更通知,随后信息都将用商定的算法加密和秘钥发送

客户端握手结束通知

第四阶段:

收到客户端发来的第二个随机数   (在会话中总共是第三个),计算生成本次会话所用到的“会话秘钥”

向客户端发送如下信息:

编码变更通知,随后发送的信息都是通过协商的加密方法和秘钥发送

服务器端握手结束通知

openssl  命令

子命令分为3类:

标准命令

消息摘要命令(dgest子命令)

加密命令(enc子命令)


[[email protected]
~]# openssl version

OpenSSL 1.0.1e-fips 11
Feb 2013    版本号,现在最新的官网应该是1.1

[[email protected] ~]# openssl ?          后面给一个错误的参数,之后会显示帮助信息,(某人没有-h选项)

openssl:Error: ‘?‘ is an invalid command.

Standard commands

ca        rand      enc   
dgest   genrsa    gendsa     version          
x509

..........省略

Message Digest commands消息摘要命令 (see the `dgst‘ command for more details) 后面为dest支持的算法

md2               md4               md5               rmd160

sha               sha1

Cipher commands 加密命令 (see the `enc‘ command for more
details)   下面显示的是enc所支持的算法

aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb

aes-256-cbc      
aes-256-ecb       base64            bf         ......省略           zlib

标准命令使用比较多的:

enc   和加密相关

ca     和ca相关

req      生成证书签署请求的

genrsa   生成rsa算法秘钥对

使用openssl完成对称加密:

工具:openssl enc ,gpg

支持算法:3des,  aes, twofish, 
blowfish ,

查看使用enc帮助信息:man enc

-e    加密

-des3  这里是按照des3算法加密  (使用什么算法可以在enc下面的子命令去查看,算法有很多)

-d    解密

-a    使用base64位编码格式(如果不编码则使用二进制格式的编码)

-salt  加些盐

-in FILE_NAME    加密这个指定的文件

-out file_Name     加密后文件的名字


[[email protected]
mnt]# cp /etc/fstab .

[[email protected] mnt]#openssl enc -e -des3 -a -salt -in fstab -out fstab.cipher      加密

enter des-ede3-cbc encryption password:        输入加密密码

Verifying - enter des-ede3-cbc encryption password:    再次输入加密密码

[[email protected]
mnt]# ls

fstab  fstab.cipher

[[email protected]
mnt]# cat fstab.cipher

U2FsdGVkX1+LdtZGW/Raaa+eNHYzuugjGQvBsIXe3BwSDs27DeX67GeXFn0rskjA

66gruhac5fkEwC8mqTgL5PbGEMi292ofztjDtWiY18yr6aEPl/6NB8adwPSNPdO7

NApgZlYIVs+/V/7Isx0+La+zGf2kDC5S5SEY5arK000EtslcDrEpebBHcmqGKGAJ

jVPDqTLcQbU2z3p/yrVm9tj9Or7Ud7HhQOcTWj6WqhHsU0oRKh4zyqSbJvNWyG6t

LOw0gd/+qbEofF95SfC5WDtxi6Z4uTqbZcEwjSCFIGd/tBNRe9Ob25Ix2FAVIbBu

z38fE3UFnypQ7g/9ZIuo85ejdzY+tuJS7qTVrjE9hPS4JIU5InGOFBpf0dfIyNxq

LeHlzQan4f2Ah9QCt7orCSzB1aDHkm/wni6IgKMKx55RXp+sBhEs2UL2wav6KHlM

EU1F+ABuqiQCE95gDq/HsLgceKi+TbaEDlcvq1VHk/I=

[[email protected] mnt]# openssl
enc -d -des3 -a -salt -in fstab.cipher -out fstab.plain    解密

enter des-ede3-cbc decryption password:    输入解密密码

[[email protected]
mnt]# ls

fstab  fstab.cipher 
fstab.plain

[[email protected]
mnt]# cat fstab.plain

#

#
/etc/fstab

# Created by anaconda on Wed Jun 15 13:41:54 2016   .....省略

openssl完成单向加密:

工具: openssl dgst ,gpg(很少使用)        (也可以使用md5sum Fielname   求特征码)

用法:使用dest子命令:


[[email protected]
mnt]# md5sum fstab

3234370d9b20a490e35c98222a535133  fstab

[[email protected] mnt]#openssl dgst -md5 fstab

MD5(fstab)=3234370d9b20a490e35c98222a535133       使用相同的算法,结果应该相同

openssl生成用户密码

工具:passwd, openssl passwd

获取帮助信息:whatis passwd
-->   man sslpasswd

使用格式:

-1    使用md5加密  (这里为数字1,不是字母l)

-salt SALT_STR    加盐,后面跟上盐的字符串,最多8位


[[email protected]
mnt]# openssl passwd -1 -salt 12345678

Password:

$1$12345678$tRy4cXc3kmcfRZVj4iFXr/

[[email protected]
mnt]# openssl passwd -1 -salt 12345678

Password:

$1$12345678$tRy4cXc3kmcfRZVj4iFXr/           单向加密,盐不变,输入的密码不变,最后结果一定一样

[[email protected]
mnt]# openssl passwd -1 -salt 12345670

Password:               雪崩效应

$1$12345670$7DdNL8JzTsaXAqPxVDm.W.               当把盐改变了,即使密码还是一样,但结果大不一样

openssl生成随机数:

工具:openssl rand

获取帮助信息:man sslrand

格式:

-bash64  使用bash64编码

-hex       
16进制数字编码


[[email protected]
mnt]# openssl rand -base64 8

X0PlMi7A/XI=

[[email protected]
mnt]# openssl rand -base64 9

6JqhqdlqhWHu

[[email protected] mnt]# openssl
rand -hex 5           使用16进制编码,你会发现5字节会有10个随机数

15970a4de5

下面是随机数结合密码使用,生成密码:

[[email protected]
mnt]# openssl passwd -1 -salt $(openssl rand -hex 4)

Password:

$1$64939ce7$XjTc5WGxHP.4VkD8MFt4o.

[[email protected]
mnt]# openssl passwd -1 -salt $(openssl rand
-hex 4)

Password:                                          之后我们会发现即使我们输入密码相同,随机数绝对不相同,生成不同结果

$1$7c111a52$E4rN6Ut/nTGNetpZEQ7Ti.

openssl实现公钥加密:

三种功能:

数字加密

支持算法:RSA   ELGamal

工具:openssl  rsautl ,gpg

数字签名

支持算法:RSA ,DSA ,ELGamal

工具: openssl
rsautl   , gpg

秘钥交换

支持算法: DH

生成秘钥对: openssl
genrsa   位数只能是512,1024,2048,4096,

这里要使用到()利用子shell环境


[[email protected]
mnt]# openssl genrsa 1024

Generating
RSA private key, 1024 bit long modulus

........................................................................................................++++++

e is
65537 (0x10001)

-----BEGIN RSA PRIVATE KEY-----           明显可以看的出这是生成的私钥

MIICXQI........中间省略.........Z

-----END
RSA PRIVATE KEY-----

但是我们一般都是要把私钥保存到文件当中,这里有两种方法(当然这两种还要结合别的):

1.通过重定向

[[email protected] mnt]# openssl genrsa
1024 > /tmp/mykey.private

Generating RSA private key, 1024 bit long modulus

................++++++

e is 65537 (0x10001)

2.通过-out选项

[[email protected] mnt]# openssl genrsa
-out /tmp/mykey2.private 1024

Generating RSA private key, 1024 bit long modulus

...........................................++++++

e is 65537 (0x10001)、

但是上面的两个命令执行之后,要对这个私钥文件进行相应的权限修改,要修改成600

所以我们这里最终使用的命令是:

[[email protected]
tmp]# (umask 077; openssl genrsa -out
/tmp/mykey3.private 4096)

Generating
RSA private key, 4096 bit long modulus

.....................................................................++   在小括号里面用分号分割两条命令,形成子shell,umask只对小括号内环境有影响,这样创建出来的文件为666-077就只能是600了,权限没问题了,结合上面的命令就可以创建出秘钥文件了,这里还要提醒的是,这里仅为实验,如果实际操作的话,秘钥文件尽量放到别的位置,如root家目录下

e is
65537 (0x10001)

从私钥中提炼出公钥:

openssl rsa

-in /path/to/FILE_name   从哪个私钥文件中提取公钥

-pubout   把公钥提出来

-out file_name   把公钥文件保存在什么位置的什么文件


[[email protected]
tmp]# openssl rsa -in /tmp/mykey.private
-pubout

writing
RSA key

-----BEGIN
PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3oUfzpg9U5azFbabYzX47MWjT

oy6SwHVpF1Dcnb/9V0u20al+4bNMcmVxxYHZB+9ocf2mBRGqo2RILOp+P7pYNUB6

gmE/5WTFellgJNkhVSDsGF08uExCJgILwwMF6PTww7Y3NIA1CdIjkT8nwLFr9474

Rvpg9nIyzI3CLTUFowIDAQAB

-----END
PUBLIC KEY-----

linux 系统上面的随机数生成器

/dev/random:  仅从熵池返回随机数,随机数用尽,则停在拿不动,阻塞

/dev/urandom:从熵池返回随机数,随机数用尽,则利用软件生成伪随机数,非阻塞

伪随机数不安全

熵池是在内存中存在的一段空间,在这个空间内存储了大量的随机数字,但是刚启动为空

熵池随机数的来源:

各种硬盘IO中断时间间隔;

键盘IO中断时间间隔(两次键盘击键的时间间隔,当做随机数放到熵池中)

熵池中的随机数使用的时候是在里面剪切,所以熵池中的随机数是有可能耗尽的;一旦耗尽,取随机数的进程就会等待哪里,直到随机数够用的时候才能够结束,这也就是阻塞的情况了,给你的感觉就是卡在那里,你要敲键盘,移动鼠标才可以结束阻塞(或者你也可以拷贝文件,产生随机磁盘IO)

生成随机数的另一个方法:

~】#  tr -dc A-Za-z0-9_  < /dev/urandom | head -c 20  |  xargs

通过熵池里面的随机数,取出前20个字节,之后通过xargs输出,我们就有了20位的随机数

CA:

公信CA,要花钱;私有CA(企业组织自己使用)

建立私有CA:

openssl      (自己企业或者测试使用的CA)

openCA   (大型,银行自检的CA)

CA搭建:

创建私有CA

yum install openssl

rpm -ql openssl-libs

配置文件是在   /etc/pki/tls/openssl.cnf

自建私有CA后,申请CA认证的机器必须与根是同一个机构,国家,省,组织,是要和根服务器的设置一致的

注:这里  CA服务器    和  web服务器

第一步:自建CA,生成自签证书

(说明一下,首先你要自己建立一个CA服务器,然后再为web服务器生成服务器)

cd /etc/pki/CA

生成私钥CA服务器自己的私钥,准备给自己做个根证书

[[email protected] CA]# (umask 077;openssl genrsa 2048 >
private/cakey.pem)

Generating RSA private key, 2048 bit long modulus

...............................+++

e is 65537 (0x10001)

cakey.pem为CA服务的自己的私钥

##因为这里是建立私有CA,同一个机构,国家,省,组织 ,所以为了后续给自己签证方便,这里需要修改

vim /etc/pki/tls/openssl.cnf

[ CA_default ]

dir             = /etc/pki/CA            # CA的工作目录

certs           = $dir/certs              # cert证书存放的位置(已经签发的证书存放位置)

crl_dir         = $dir/crl                  # crl吊销证书的存放列表

database        = $dir/index.txt       
# 数据库存放各种颁发证书的索引,这个文件要自己建立

new_certs_dir   =
$dir/newcerts         # default place for
new certs.

certificate     = $dir/cacert.pem        #  CA的自签证书

serial          = $dir/serial              # 指明当前序列号码,第一次为1,下一次自动为2,用来为当前每一个证书提供序列号

private_key     = $dir/private/cakey.pem       # CA自己的私钥

country Name_default = CN

StateOrprovinceName_default = Beijing

LocatityName_default = Shangdi

0.organizationName_default = M19

organizationUnitName = Jishu

生成根自签证书


[[email protected] private]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3665 -out /etc/pki/CA/cacert.pem

注:根CA的自签证书要放到/etc/pki/CA目录下,这是配置文件里面默认指定的

这里很多保持默认即可,因为已经在配置文件里指定了默认值了

Common Name (eg, your name or your server‘s hostname) []:yuan.zouzhiyuan.com

Email Address []:

cacert.pem就是根证书,理论上和权威证书一样

这里需要说明的一点就是在hostname的位置要写上主机名,如果是对外服务器的话那就有必要写上域名相对应的主机名

把一开始/etc/pki/tls/openssl.cnf 配置文件里面定义的部分指明的文件或目录都要创建完毕

~】#   mkdir -pv
/etc/pki/CA/{certs,crl,newcerts}

~】#   touch
/etc/pki/CA/{serial,index.txt}

~】#   echo 001 >
/etc/pki/CA/serial

对于serial文件,要给定第一个证书编码的格式,后续的按照这个格式走,所以需要首订指定一下

第二步:利用这个CA服务器创建一个证书然后给web服务器作为证书使用了,

(先在web服务器生成一个证书,注意的是在域名时必须要填写web利用的域名,,然后把这个证书发送给CA服务器签发一下,再让CA把签发好的web证书发送给web服务器,就可以了)

((cd /etc/httpd/conf     这个目录默认应该是/etc/pki/CA/privite  ,但是因为是打算给web服务器做,方便管理就刚到相应位置了

mkdir ssl    方便管理创建的目录   ------- >    cd ssl/

(umask 077; openssl genrsa 2048 > httpd.key)  web服务器自己生成的私钥))


web服务器端生成自己的私钥并生成证书请求

[[email protected] ~]# cd /etc/pki/CA/private/

[[email protected]
private]# ls

[[email protected] private]# (umask 077;openssl genrsa 4096 > http.key)

Generating RSA private key, 4096 bit long modulus

..............++

e is 65537 (0x10001)

[[email protected]
private]# openssl req -new -key http.key -out
httpd.csr

You are about to be asked to enter information that will be
incorporated

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:Beijing

Locality Name (eg, city) [Default City]:Shangdi

Organization Name
(eg, company) [Default Company Ltd]:M19    要与证书CA一致

Organizational Unit Name (eg, section) []:haizeiwang

Common Name (eg, your name or your server‘s hostname) []:zou.zouzhiyuan.com

如果是web的证书生成的时候一定要写好自己的主机与域名如www.6k6.cc,当然这只是假设,你在这写的一般都是hostname,如果没有hostname自己要先设置好hostname了

Email Address []:   [email protected]

Please enter the following ‘extra‘
attributes to be sent with your
certificate request

A challenge password []:    证书密码,这里测试可以保持为空

An optional company name []:  保持回车即可

这样就是生成web服务器的httpd.csr,这就是证书请求

把生成的证书请求发送给CA服务器    (实际中可能是CA服务器过来人拿走)

[[email protected]
private]# scp httpd.csr
[email protected]:/etc/pki/CA/private/

httpd.csr                                   100%
1712     1.7KB/s   00:00

CA服务器端: 收到web服务器端发送来的http.csr,把这个给他签了(现在要准备好为别人签证的基础环境了)

[[email protected] private]# pwd

/etc/pki/CA/private

[[email protected] private]# openssl ca -in httpd.csr -out /etc/pki/CA/certs/http.crt -days 365

http.crt是最后的web证书

[[email protected]
certs]# pwd

/etc/pki/CA/certs

CA服务器把签发的证书发送给web端(实际为CA机构派人送证书到web公司)

[[email protected] certs]# scp /etc/pki/CA/certs/http.crt  [email protected]:/etc/pki/CA/certs/

[email protected]‘s
password:

http.crt                                                         
100% 5971     5.8KB/s   00:00

时间: 2024-08-29 04:03:52

Openssl安全与认证的相关文章

openssl制作双向认证经过验证可行

http://www.360doc.com/content/12/0524/15/2150778_213390447.shtml 2012-05-24  履历馆 创建一个证书的步骤: (1)生成系统私钥 (2)生成待签名证书 (3)生成x509证书, 用CA私钥进行签名 (4)导成浏览器支持的p12格式证书 备注:创建过程中如遇到unable to load local/user/openssl.cnf的情况,将openssl.cnf拷贝到openssl.exe所在的目录下. 二:生成CA证书

openssl创建非认证的https证书(红色的)

1.生成csr,key openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc./OU=Web Security/CN=example.com" 以上域名修改成自己的域名即可 2.csr转crt生成CA自签名证书:openssl req -new -x509 -

航天七三一医院护理电子病历的设计与实施

中图分类号:TP3                                                         论文编号: 专业硕士学位论文   航天七三一医院护理电 子病历的设计与实施 作者姓名 学科专业  软件工程 指导教师 培养院系  软件学院 The Design and Implementation of Aerospace 731 hospital electronic nursing record system   A Dissertation Submitte

Linux安全与加密基础(一)

Linux安全与加密基础(一) 常见的加密算法 SSL: Openssl与CA认证 ssh服务 dropbear AIDE sudo 常见的加密算法 密码学古以有之,尤其是在中国古代的战争中,在现在科技中,密码学不得不说是一门高深的学问,普通人知其一二足矣:本文要讨论的是关于加密与解密的基本原理与应用,以及关于Linux系统中的一些安全管理问题,如ssh服务,监控系统关键文件是否被篡改,sudo提权等. 1.对称加密 所谓对称加密,就是同一个密钥可以同时用作信息的加密和解密. 常见的对称加密算法

Linux安全与加密基础(二)

Linux安全与加密基础(二) 常见的加密算法 SSL: Openssl与CA认证 ssh服务 dropbear AIDE sudo gpg gpg亦可用于对称加密与文件检验. 文件完整性的两种实施方式 被安装的文件     MD5单向散列     rpm --verify package_name (or -V) 发行的软件包文件     GPG公钥签名     rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*     rpm --checks

2017-2018-1 20155229 实验五 《通讯协议设计》

2017-2018-1 20155229 实验五 <通讯协议设计> 实验目的 通过学习openssl,了解openssl,并且能够通过它来实现密码算法的印证 实验步骤 实验五 通讯协议设计-1 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作业 Linux下OpenSSL的安装与使用 OpenSSL简介 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目

Linux的加密认证功能以及openssl详解

一.详细介绍加密.解密技术 现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密 这三种加密解密技术的组合就是现在电子商务的基础,它们三个有各自最适合的领域,而且所要完成的功能也是不同的,大家都知道,只要我们连上互联网,那么我们就相当于大门洞开,我们的一些隐私,跟其他人对话内容等都有可能会被人窃听,最常见的比如man in the middle(中间人),它主要是因为双方身份无法验证的时候回话被劫持造成的,就是说通信双方都以为是在跟对方交流,其实内容都可能已经被这个“中间人”修改过,

基于X.509证书和SSL协议的身份认证过程实现(OpenSSL可以自己产生证书,有TCP通过SSL进行实际安全通讯的实际编程代码)good

上周帮一个童鞋做一个数字认证的实验,要求是编程实现一个基于X.509证书认证的过程,唉!可怜我那点薄弱的计算机网络安全的知识啊!只得恶补一下了. 首先来看看什么是X.509.所谓X.509其实是一种非常通用的证书,什么是证书?唉!这么说吧!当两个人需要进行远程通信而又不想让第三个人知道时就必须建立一种安全措施,因为看不到对方的脸,又不能通过电话直接询问对方,就得想点别的办法,比如我设计一个密码,让后发短信告诉你,这样当我们在网上交流之前就可以对一下密码,暗号之类的.确认后就可以证明你的身份了.这

基于openssl的单向和双向认证

1.前言 最近工作涉及到https,需要修改nginx的openssl模块,引入keyless方案.关于keyless可以参考CloudFlare的官方博客: https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/?utm_source=tuicool&utm_medium=referral. 在openssl的基础上修改私钥校验过程,因此需要对openssl的认证认证流程需要熟悉一下.SSL中涉及到