Common service

1.2 OpenSSL

 

导语:
==================

SSL/TLS :

SSL:Secure  Sockets  Layer,安全套接字层;<版本:ssl 1.0 , ssl 2.0 , ssl 3.0>
TLS:Transport  Layer  Security,传输层安全;<版本:tls 1.0 , tls 1.1 , tls 1.2 , tls 1.3>

SSL会话过程:
1> 客户端向服务端索要并验证证书;
2> 双方协商生成”会话密钥”;<第1、2步称为SSL建立会话前的握手阶段>
3> 双方采用”会话密钥”进行加密通信;

第一阶段:客户端向服务器端发送”clienthello”信息,信息内容包括如下;
   支持的协议版本,比如TLS的版本;
   客户端生成一个随机数,稍后用于生成”会话密钥”;
   支持的加密算法,比如AES,RSA等;
   支持的压缩算法等;

第二阶段:服务器端向客户端回应”serverhello”信息;
   确认使用的加密通信协议版本;
   服务器段生成一个随机数,稍后用于生成”会话密钥”;
   确认使用的加密方法;
   服务器端证书;

第三阶段:客户端;
   验证服务器端证书(发证机构、证书完整性、证书的持有者、证书有效期、证书是否被吊销等),确认无误后,取出服务器端的公钥;
   发送以下信息给服务器端:
   一个随机数,用服务器端的公钥加密此随机数;
   编码变更通知;
   客户端握手结束通知;

第四阶段:服务器端;
   收到客户端发来的第二个随机数pre-master-key后,再加上第一个随机数、服务器端的自己产生的随机数,总共3个随机数,计算生成本次会话    所用到的”会话密钥”;
   向客户端发送如下信息:
   编码变更通知,表示随后的信息都将采用双方商定的加密方法和会话密钥进行发送;
   服务器端握手结束通知;

加密算法和协议:
1> 对称加密:3DES,AES;
2> 公钥加密:不常用,比对称加密要慢3个数量级,RSA,DSA;
3> 单向加密:MD5,SHA1…;
4> 密钥交换:RSA,DH(Deffie-Hellman),ECDH(椭圆曲线DH),ECDHE(临时椭圆曲线DH);

概述:
==================

OpenSSL(v2):

OpenSSL的组成部分:
1>libcrypto:用于实现加密解密的库;
2>libssl:用于实现SSL安全通信的库;
3>openssl:命令行工具;

查看当前系统的OpenSSL版本:

[root@KOU ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
[root@KOU ~]#

查看OpenSSL支持的命令:

[root@KOU ~]# openssl ?
openssl:Error: '?' is an invalid command.

Standard commands
asn1parse         ca                ciphers           cms               
crl               crl2pkcs7         dgst              dh                
dhparam           dsa               dsaparam          ec                
ecparam           enc               engine            errstr            
gendh             gendsa            genpkey           genrsa            
nseq              ocsp              passwd            pkcs12            
pkcs7             pkcs8             pkey              pkeyparam         
pkeyutl           prime             rand              req               
rsa               rsautl            s_client          s_server          
s_time            sess_id           smime             speed             
spkac             ts                verify            version           
x509              

Message Digest commands (see the `dgst' command for more details)
md2               md4               md5               rmd160            
sha               sha1              

Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       
aes-256-cbc       aes-256-ecb       base64            bf                
bf-cbc            bf-cfb            bf-ecb            bf-ofb            
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb  
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc          
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb         
des               des-cbc           des-cfb           des-ecb           
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb       
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb      
des-ofb           des3              desx              idea              
idea-cbc          idea-cfb          idea-ecb          idea-ofb          
rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc           
rc2-cfb           rc2-ecb           rc2-ofb           rc4               
rc4-40            rc5               rc5-cbc           rc5-cfb           
rc5-ecb           rc5-ofb           seed              seed-cbc          
seed-cfb          seed-ecb          seed-ofb          zlib              

[root@KOU ~]#

正文:
==============

1、OpenSSL命令的子命令:
标准命令;
消息摘要命令(由’dgst’子命令控制);
加密命令(由’enc’子命令控制);

常用的标准命令:enc,ca,req,genrsa,

1> 对称加密:

命令工具:openssl {enc|gpg}
支持的算法:3des,aes,blowfish,twofish,…

查看enc命令的使用帮助:”man enc”

加密:~]# openssl  enc  -e  -des3  -a  -salt  -in  /PATH/FROM/SRC_FILENAME  -out  /PATH/TO/ENCRY_FILENAME
解密:~]# openssl  enc  -d  -des3  -a  -salt  -out  /PATH/FROM/NEW_FILENAME  -in  /PATH/FROM/ENCRY_FILENAME

2> 单向加密: 生成文件的特征码;

命令工具:openssl dgst ;或者单独使用命令”md5sum”,”sha1sum”,”sha224sum”,”sha256sum”,”sha384sum”,”sha512sum”;

支持的常用的算法:sha1,md5

~]# openssl  dgst  -md5  /PATH/FROM/SRC_FILENAME

3> 对用户进行密码赋值:

命令工具:openssl  passwd 或者单独使用 passwd;

~]# openssl  passwd  -1  -salt  12345678956

“-1” :   数字1,表示采用MD5加密;
“-salt” : 表示后面要跟一个随机数;

如果随机数不手动指定,也可通过命令替换,让系统产生随机数即可,具体命令格式为:
~]# openssl  passwd  -1  -salt  $(openssl  rand  -hex  4)
~]# openssl  passwd  -1  -salt  $(openssl  rand  -base64  5)

4> 生成随机数:

命令行工具:
~]# openssl  rand  {-base64|-hex}  number

-base64 :  表示采用base64编码格式显示随机数;
-hex :        表示采用十六进制编码格式显示随机数;
number : 表示要输出的随机数的字节长度;

[root@KOU kou]# openssl  rand  -base64  10
5y3nMS3BchmNvw==
[root@KOU kou]#

上面生成的随机数”5y3nMS3BchmNvw==”中,”==”是固定格式,其前面的才是生成的随机数;

Linux系统上的随机数生成器:
/dev/random:   仅从熵池返回随机数;随机数用尽,则阻塞后来的进程;
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞;伪随机数不安全;

熵池中的随机数来源:
硬盘IO中断的时间间隔;
键盘IO中断的时间间隔;

5> 公钥加密:

加密解密的算法:RSA,ELGamal;
加密解密的命令工具:openssl {rsautl|gpg}

数字签名的算法:RSA,DSA,ELGamal;
数字签名的命令工具:openssl  {rsautl|gpg}

密钥交换的算法:DH,
密钥交换的命令工具:openssl  {rsautl|gpg}

密钥位长:512 、 768 、 1024 、 2048 、 4096;

生成私钥:
——————-
~]# (umask 077;openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS)

举例:
~]# openssl  genrsa  1024                                    生成1024位的密钥,默认生成私钥;

~]# openssl  genrsa  1024  >  k1.file                   生成1024位的密钥,输出重定向保存至指定文件;
~]# openssl  genrsa  -out  k2.file  1024             生成1024位的密钥,输出重定向保存至指定文件;

备注:上面2个保存私钥的文件权限为”-rw-r–r–“,因为是私钥,其他人能读取,此种文件权限格式不安全;可以用umask命令指定文件的权限;

~]# (umask  077; openssl  genrsa  -out  k3.file  1024)             指定保存私钥的文件权限,只有属主能读写;

公钥是从私钥中提取出来的;
提取出公钥,并保存至指定文件:
—————————-
~]# openssl  rsa  -in  /PATH/FROM/PRIVATE_KEY_FILE  -pubout  -out  /PATH/TO/PUBLIC_KEY_FILE

 

2、CA

可以建立私有CA的工具:openssl、openca;

2.1  openssl 配置文件:/etc/pki/tls/openssl.cnf;

2.2  构建私有CA:在确定配置为CA的服务器上生成一个自签证书,并为CA提供所需要的目录及文件;

具体步骤:

1> 生成私钥:
~]# (umask  077; openssl  genrsa  -out  /etc/pki/CA/private/cakey.pem  2048)

说明:私钥必须要保存在目录’/etc/pki/CA/private/’中,且私钥文件名必须为’cakey.pem’;

2> 生成自签证书:
~]# openssl  req  -new  -x509  -key  /etc/pki/CA/private/cakey.pem  -out  /etc/pki/CA/cacert.pem  -days  730

‘-new’ :    表示生成新证书的签署请求;
‘-x509’ :  表示生成自签格式的证书,专用于创建私有CA时使用;
‘-key’ :     指定生成请求时用到的私钥文件(文件的完整路径);
‘-out’ :     生成请求的输出文件路径;如果是自签操作,将直接生成签署过的证书;
‘-days’ :   选项,后面跟数字,单位是”天”,表示证书有效期;默认值为’365’,即一年;

3> 为CA提供所需的目录及文件;
确保在目录’/etc/pki/CA’下面需有如下子目录及文件,如果不存在,则手动创建:
目录:certs、crl、newcerts;
文件:serial、index.txt;

~]# mkdir  /etc/pki/CA/{certs,crl,newcerts}
~]# touch  /etc/pki/CA/{serial,index.txt}
~]# echo  09  >  /etc/pki/CA/serial

2.3  要用到证书进行安全通信的服务器,需要向CA请求签署证书;

1> 申请者主机上:以httpd为例,在httpd的安装目录下创建目录,比如’ssl’,并在此目录下生成私钥:

~]# cd /etc/httpd
~]# mkdir ssl
~]# cd ssl

~]# (umask  077; openssl  genrsa  -out  httpd.key  2048)

2> 申请者主机上:生成证书签署请求文件:

~]# openssl  req  -new  -key  httpd.key  -out  httpd.csr  -days  365

3> 申请者主机上:把生成的证书签署请求文件发给CA服务器;

4>  CA服务器上:做签署操作;

~]# openssl  ca  -in  httpd.csr  -out  /etc/pki/CA/certs/httpd.crt  -days  365

5>  CA服务器上:把签署好的证书发给申请者;

查看已经签署的证书(可查看指定信息,比如serial、subject等):也可用’cat’之类的文本查看工具查看整个文件的信息;

~]# openssl  x509  -in  httpd.crt  -noout  -serial  -subject

2.4 吊销证书操作:在CA服务器上操作;

1> 证书使用者:证书使用者先查看证书的serial号,并把序列号发给CA服务器;

~]# openssl  x509  -in  httpd.crt  -noout  -serial  -subject

2> CA服务器:吊销证书;

首先根据证书使用者提供的证书序列号对比CA服务器本机数据库’index.txt’中存储的数据是否一致,如果一致,则执行下面的吊销操作;

~]# openssl  ca  -revoke  /etc/pki/CA/newcerts/SERIAL.pem

SERIAL : 换成实际的序列号;

3> 生成吊销证书的吊销编号
注意:在CA服务器上首次执行吊销操作时需要执行此步骤,第二次吊销其他所有证书时无需操作;

~]# echo  01  >  /etc/pki/CA/crlnumber

4> 更新证书吊销列表

~]# openssl  ca  -gencrl  -out  NAME.crl

查看上面crl文件的信息:
~]# openssl  crl  -in  /PATH/FROM/CRL_FILE.crl  -noout  -text

 

F.E.

1>对文件进行对称加密:

[root@KOU kou]# openssl enc -e -des3 -a -salt -in fstab -out fstab.encry
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
[root@KOU kou]# 

[root@KOU kou]# more fstab.encry 
U2FsdGVkX1+cU795/br27B5g5ShgBigs5m4Ywpzr2rjQMZkCj5MDw7QBO8Oa3lXu
d0QF22zKTiZCp09XH/TEQzznXXO9VOATM3uT1xPg+2xD7XGhzGBW0huJUceN6EJQ
qex2s0NbCSPjoB8jbhzR51DvK+vs/Kl8cc2S+ttYdojcSs4exY4WX+J1iMdl1h5k
SpderfDP87bEMl88mMw5P/4uMho1sx+IfbQbJRoPUk1r4PE82N1r+nsM5ztG7sEj
3nSmqb1BuMKztA3vj9GVeRN0nbCN7XGzXXC8eg1LZwE8pPd8nOzulpsn0VDINNM9
T9dHlPg/bSaz4FqChHAN4STdktAJq9SEee6bzrhD/GntTSJUmbq0059YNE8CnEck
FdYA+JW9JEP4zuslRSQL12YameKq+Cg7eIM63og3PlgU6HP/Un8cWvmeSgRC+82A
ObUNyQRtK4deuk7qqv7XOI8QzdbB/4P4ojAc+6P7bbRQIhlPshmz2wBtw0Nl8umS
fK8Sn6ba/ulnfeI6kv0Xqk48UaDrI8Ik0+9AGdqJgD5aXm0QNIkkGcim+u8nRo8I
QxR5YzcSQc+JcRhfhfESDSwPkOws3hNhtpgBve1IxocFmmwtQBSikJdQek7FaHrQ
OS6xEA00/OTprZyZQ3ZlFvrAHje5p9yva7k5lc9a9FcsuqZCxb7wMaGx3K7ZlPHA
TVwdhUVYedzt7ZfStLzmFZIpK9AfdUq4aFycXX10wpAOqG34LgyU4GkhLYX0aL6S
lI4hnfeT7WEXUrJaeNLfHywDvFvXfKieJzh1aOYSijJ8sMX2ufDYB4vmW3f77Sot
UEnS6DO9UlMMWwJN9p1lL/7aoSd7pwJ0ZaVKqHoPYwBD2eu96fntJnJMLo+1QKwR
KD3EsAwDIPmBOTZOdeTWFQ==
[root@KOU kou]#

2>对对称加密的文件进行解密:

[root@KOU kou]# openssl enc -d -des3 -a -salt -out fstab.11 -in fstab.encry
enter des-ede3-cbc decryption password:
[root@KOU kou]#

3>单向加密举例:

[root@KOU kou]# md5sum fstab
9051c1f4f8babd1d14c732f0b7f74409  fstab
[root@KOU kou]# 
[root@KOU kou]# openssl dgst -md5 fstab
MD5(fstab)= 9051c1f4f8babd1d14c732f0b7f74409
[root@KOU kou]# 
[root@KOU kou]# openssl dgst -sha fstab
SHA(fstab)= 30544b5292c86f75dd0f4f70b739a0059fdedc3d
[root@KOU kou]# 
[root@KOU kou]# openssl dgst -sha1 fstab
SHA1(fstab)= 139f492871a65e5cc0370455170cbf59c71e83c8
[root@KOU kou]# 
[root@KOU kou]# sha
sha1sum    sha224sum  sha256sum  sha384sum  sha512sum  sharesec   
[root@KOU kou]# sha1sum fstab
139f492871a65e5cc0370455170cbf59c71e83c8  fstab
[root@KOU kou]# 
[root@KOU kou]# sha224sum fstab
ffaded9bc1a994f70edc3523e4c28984409eea04d95077f68bd123b7  fstab
[root@KOU kou]#

3>对用户进行密码赋值

[root@KOU kou]# openssl passwd -1 -salt 333333 
Password: 
$1$333333$.f.oA2kyPFDLrKUa7Xbfg/
[root@KOU kou]#

4>生成随机数:

[root@KOU kou]# openssl rand -base64 10
5y3nMS3BchmNvw==
[root@KOU kou]# 
[root@KOU kou]# openssl rand -base64 10
4EHPT6JuwRZ8Vw==
[root@KOU kou]# openssl rand -base64 10
pWuAuuuxd40cBQ==

5>生成1024位的密钥:

[root@KOU kou]# openssl genrsa 1024
Generating RSA private key, 1024 bit long modulus
...........................++++++
..................................................++++++
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC9K90F8PJI2HbfXIGAOPi6HkUlbk3tJkN4ok7z6S/u3prO9FwU
AmFP+GUiRDPzhRMRewqPE7zcKYe8p9QBcBoM9TmS7cR0Xy9jC2GgnL9BxT5Ru9YW
xfb0XjaKMCdOMjdEvm4fKVL7dQeVgKKXXDdS/Yc659O/cnv4YwxBp4bEHQIDAQAB
AoGAN/jFgd+D4JfjvD0DuCujNHaGYQfdGMEMj6H+mF6zpwrIZVmZ8PWvU1kcm2Hw
uSnztWVhf2oIpF/JYMGLkg1YN2EDu8WEEG3OevPJh9Ntj8KBOru6A8KppZ38Csi0
6W2tCnfP72Oe23CJqWPt7wbBIpMnnfBUEQDYAYwpDTSgowUCQQDifzk5+QVQqZB1
f9KH21yw2AD0EHettezXnkUJrY3nVVEbqf6vxajbHnjTmuASp3OD3Ks3gSFzKrQL
Jf/UToJPAkEA1c/6ZM8rs6rzJrpgME4/aCqgS+1khY+rhqAuYVIoFDGY9ATkqZPi
HW12iLvKtiw4S2QFkfVC7l2vVIZn4KKT0wJAE6hnFxj91RpiZ1BIvXHUgaS9sHEd
cf4wKCacZ1Kg1ksZVwVSDX9iQGJMqlDu0a+m3vLwCUkz1gMGzVDm+041EQJAOf2J
rTPfZ4CTKErecduXKPp+tXkyjWMVI5NoYO72fduh33VAS5oXduHMh3NfnJ9LuW7s
b9T0jVANkMBPhkayDwJAcc8KUDIHB1CFf8jo7e/3aP4GF634q03zQh2GF3F7acPK
WSgStt0HZqpK7jcmvc4CrxZAb+RkS0JHZwwCZ1e8qg==
-----END RSA PRIVATE KEY-----
[root@KOU kou]#
[root@KOU kou]# (umask 077;openssl genrsa -out k3.file 1024)                 指定文件的权限;
Generating RSA private key, 1024 bit long modulus
...................................................................++++++
......................................................................++++++
e is 65537 (0x10001)
[root@KOU kou]# 
[root@KOU kou]# ll
total 20
-rw-r--r--. 1 root root 671 May 31 06:17 fstab
-rw-r--r--. 1 root root 935 May 31 06:19 fstab.encry
-rw-r--r--. 1 root root 887 May 31 08:43 k1.file
-rw-r--r--. 1 root root 887 May 31 08:45 k2.file
-rw-------. 1 root root 887 May 31 08:49 k3.file                             只有属主能读写;
[root@KOU kou]#

从私钥中提取出公钥,并保存至指定文件中:

[root@KOU kou]# openssl rsa -in k3.file -pubout -out k3.public1
writing RSA key
[root@KOU kou]# 
[root@KOU kou]# ll
total 28
-rw-r--r--. 1 root root 671 May 31 06:17 fstab
-rw-r--r--. 1 root root 935 May 31 06:19 fstab.encry
-rw-r--r--. 1 root root 887 May 31 08:43 k1.file
-rw-r--r--. 1 root root 887 May 31 08:45 k2.file
-rw-------. 1 root root 887 May 31 08:49 k3.file
-rw-r--r--. 1 root root 887 May 31 08:59 k3.public
-rw-r--r--. 1 root root 272 May 31 09:01 k3.public1
[root@KOU kou]# more k3.public1
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxTPtWXq/bmLIuOtR/V79Q7ub7
MjZp70oz7zltwiF8h0MrUGsH2+5g2MsqWV/V+I6FYB+1bQH8Z8p1isleK+FhOt0X
e2YJRG81e93njEGNjTScd1u4XhYcG3TAMmsPTfre4gXCaUiJTK+L7+VdXXpR4hur
DMriXXzAfbvZQVYbjwIDAQAB
-----END PUBLIC KEY-----
[root@KOU kou]#

6>构建私有CA步骤:

生成私钥;生成自签证书;为CA提供所需的目录及文件;

6.1> 生成私钥,用固定名称保存至固定目录中:
------------------------------------------------
[root@KOU kou]# 
[root@KOU kou]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
............................................+++
.....+++
e is 65537 (0x10001)
[root@KOU kou]# 

6.2> 生成自签证书,自签证书的名称、保存路径都是固定的:
-------------------------------------------------------------
[root@KOU kou]# 
[root@KOU kou]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 730
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 (2 letter code) [XX]:CN
State or Province Name (full name) []:GuangDong
Locality Name (eg, city) [Default City]:GuangZHou
Organization Name (eg, company) [Default Company Ltd]:D.S.Ltd
Organizational Unit Name (eg, section) []:^C
[root@KOU kou]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 730
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 (2 letter code) [XX]:CN
State or Province Name (full name) []:GuangDong
Locality Name (eg, city) [Default City]:GuangZHou
Organization Name (eg, company) [Default Company Ltd]:DStec
Organizational Unit Name (eg, section) []:OPs
Common Name (eg, your name or your server's hostname) []:ca.kouyuushinn.cn
Email Address []:lucifer@kouyuushinn.cn
[root@KOU kou]# 

6.3> 如果如下目录及文件不存在,则需创建:目录"/etc/pki/CA{certs,crl,newcerts}"、文件"/etc/pki/CA/{serial,index.txt}";
[root@KOU kou]# ll /etc/pki/CA
total 4
-rw-r--r--. 1 root root 1448 Jun  1 00:22 cacert.pem
drwxr-xr-x. 2 root root    6 Apr 11 12:58 certs
drwxr-xr-x. 2 root root    6 Apr 11 12:58 crl
drwxr-xr-x. 2 root root    6 Apr 11 12:58 newcerts
drwx------. 2 root root   23 Jun  1 00:17 private
[root@KOU kou]# 
[root@KOU kou]# 
[root@KOU kou]# touch /etc/pki/CA/{serial,index.txt}
[root@KOU kou]# 
[root@KOU kou]# echo 08 > /etc/pki/CA/serial 
[root@KOU kou]# 
[root@KOU kou]#

7> 为其他主机签署证书:

7.1> 在需要申请证书的主机上创建私钥、生成证书申请文件:

[root@localhost ~]# cd /etc/httpd
[root@localhost httpd]# 

[root@localhost httpd]# mkdir 66ssl
[root@localhost httpd]# 
[root@localhost httpd]# ls
66ssl  conf  conf.d  conf.modules.d  logs  modules  run
[root@localhost httpd]# 
[root@localhost httpd]# cd 66ssl/
[root@localhost 66ssl]# 

[root@localhost 66ssl]# (umask 077;openssl genrsa -out httpd.key 2048)
Generating RSA private key, 2048 bit long modulus
..............+++
..................................................................................................+++
e is 65537 (0x10001)
[root@localhost 66ssl]# 

[root@localhost 66ssl]# openssl req -new -key httpd.key -out httpd.csr -days 365
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 (2 letter code) [XX]:CN
State or Province Name (full name) []:GuangDong
Locality Name (eg, city) [Default City]:GuangZHou
Organization Name (eg, company) [Default Company Ltd]:DStec
Organizational Unit Name (eg, section) []:OPs
Common Name (eg, your name or your server's hostname) []:192.168.206.66
Email Address []:aa@kk.cn

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@localhost 66ssl]# 


7.2> 把生成的证书申请文件发送给CA服务器;

7.3> CA服务器上操作签署动作:

[root@KOU kou]# openssl ca -in httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 8 (0x8)
        Validity
            Not Before: May 31 17:16:12 2018 GMT
            Not After : May 31 17:16:12 2019 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = GuangDong
            organizationName          = DStec
            organizationalUnitName    = OPs
            commonName                = 192.168.206.66
            emailAddress              = aa@kk.cn
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                F3:88:B9:61:1C:E1:57:3C:54:0A:97:97:08:03:F6:E6:EE:1E:5C:07
            X509v3 Authority Key Identifier: 
                keyid:19:63:66:F9:1E:E3:B5:95:32:64:23:0F:96:DD:B5:5D:A7:F3:1F:E6

Certificate is to be certified until May 31 17:16:12 2019 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@KOU kou]# 

---------------------

[root@KOU kou]# cd /etc/pki/CA
[root@KOU CA]# ls
cacert.pem  certs  crl  index.txt  index.txt.attr  index.txt.old  newcerts  private  serial  serial.old
[root@KOU CA]# more serial
09
[root@KOU CA]# 
[root@KOU CA]# more certs/httpd.crt 
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 8 (0x8)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=CN, ST=GuangDong, L=GuangZHou, O=DStec, OU=OPs, CN=ca.kouyuushinn.cn/emailAddress=lucifer@kouyuushinn.cn
        Validity
            Not Before: May 31 17:16:12 2018 GMT
            Not After : May 31 17:16:12 2019 GMT
        Subject: C=CN, ST=GuangDong, O=DStec, OU=OPs, CN=192.168.206.66/emailAddress=aa@kk.cn
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:e8:30:54:9f:32:ee:d9:41:da:07:a6:93:58:f0:
                    c5:e3:9c:d6:bb:33:d1:a4:b9:a7:aa:dd:e6:d0:ed:
                    f8:1a:54:55:29:9c:a3:45:79:a0:6f:e6:32:b2:82:
                    1d:1d:63:0f:58:74:a9:6c:38:fc:77:f4:f1:4b:cc:
                    50:93:2f:d5:ec:36:87:97:60:5a:61:d0:8d:65:d6:
                    53:dc:4a:5d:70:54:4d:ec:5a:b1:4f:be:a8:19:ec:
                    ba:70:45:11:93:3a:7e:b9:4e:5e:07:9b:05:0d:ca:
                    58:d2:8a:3d:d7:6e:e1:60:9e:3f:47:9f:ff:34:5a:
                    b6:1d:e1:dd:65:9e:cd:52:74:b0:85:bc:78:2e:ac:
                    42:75:93:8a:f6:d2:bf:35:f8:4c:4e:d6:11:81:d8:
                    43:15:96:eb:d4:b8:d8:7a:19:d7:0e:88:d4:4e:a7:
                    4b:c5:33:58:a8:48:10:1b:f5:00:fb:e1:be:82:ee:
                    35:7f:ed:81:33:e3:0c:bc:8c:8f:7b:ef:d8:bd:99:
                    29:bd:64:df:56:8b:c1:e9:3b:9e:47:58:8e:fa:8c:
                    ed:67:48:1c:95:70:b1:a3:17:ee:26:7a:94:ba:00:
                    de:c7:77:d1:38:9e:51:67:40:fb:4c:30:ad:1e:f4:
                    45:8e:58:77:1c:aa:65:0f:a2:9e:f5:57:b3:c6:f8:
                    51:6f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                F3:88:B9:61:1C:E1:57:3C:54:0A:97:97:08:03:F6:E6:EE:1E:5C:07
            X509v3 Authority Key Identifier: 
                keyid:19:63:66:F9:1E:E3:B5:95:32:64:23:0F:96:DD:B5:5D:A7:F3:1F:E6

    Signature Algorithm: sha256WithRSAEncryption
         8e:92:cc:aa:36:12:ea:0c:bc:f8:4b:7b:19:2b:4e:9a:6f:7f:
         a3:a9:75:0b:95:d7:8f:05:76:e9:9c:9a:59:23:c6:38:74:cf:
         33:54:9b:13:f5:3d:cb:f1:3c:ff:09:ad:b7:4d:f6:88:7e:fb:
         00:41:23:42:b2:a2:ed:c7:31:4f:14:d1:83:91:83:af:42:26:
         71:e3:f0:64:4b:16:f1:ad:59:48:55:f4:ca:75:36:7d:70:2f:
         24:0d:6a:2c:66:6a:76:e0:c1:02:98:32:39:a0:4f:44:1a:88:
         c6:97:97:2c:4f:1a:32:be:72:d9:a7:e2:81:aa:e5:91:e6:42:
         ba:f0:57:34:85:77:14:f6:3f:16:5c:98:50:a6:b6:a4:d6:1b:
         2f:eb:4a:de:f0:74:ca:a6:e5:a5:f5:83:66:79:31:e0:d7:7c:
         d6:8e:25:5a:bb:c2:51:d4:fa:0e:2f:b5:17:b4:9b:fe:27:06:
         e5:d8:5c:3d:6d:b9:5a:84:1e:d7:e8:7d:d1:a9:41:12:54:12:
         5d:0f:15:5e:3b:25:f1:18:bb:62:cc:66:93:87:65:cc:64:2d:
         9c:a3:9c:64:7e:c3:7d:72:65:47:da:79:3a:97:9b:97:21:62:
         9c:78:04:ef:db:97:17:25:92:57:6a:10:45:6b:30:ee:e9:a5:
         f5:84:5f:10
-----BEGIN CERTIFICATE-----
MIID/jCCAuagAwIBAgIBCDANBgkqhkiG9w0BAQsFADCBljELMAkGA1UEBhMCQ04x
EjAQBgNVBAgMCUd1YW5nRG9uZzESMBAGA1UEBwwJR3VhbmdaSG91MQ4wDAYDVQQK
DAVEU3RlYzEMMAoGA1UECwwDT1BzMRowGAYDVQQDDBFjYS5rb3V5dXVzaGlubi5j
bjElMCMGCSqGSIb3DQEJARYWbHVjaWZlckBrb3V5dXVzaGlubi5jbjAeFw0xODA1
MzExNzE2MTJaFw0xOTA1MzExNzE2MTJaMHExCzAJBgNVBAYTAkNOMRIwEAYDVQQI
DAlHdWFuZ0RvbmcxDjAMBgNVBAoMBURTdGVjMQwwCgYDVQQLDANPUHMxFzAVBgNV
BAMMDjE5Mi4xNjguMjA2LjY2MRcwFQYJKoZIhvcNAQkBFghhYUBray5jbjCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOgwVJ8y7tlB2gemk1jwxeOc1rsz
0aS5p6rd5tDt+BpUVSmco0V5oG/mMrKCHR1jD1h0qWw4/Hf08UvMUJMv1ew2h5dg
WmHQjWXWU9xKXXBUTexasU++qBnsunBFEZM6frlOXgebBQ3KWNKKPddu4WCeP0ef
/zRath3h3WWezVJ0sIW8eC6sQnWTivbSvzX4TE7WEYHYQxWW69S42HoZ1w6I1E6n
S8UzWKhIEBv1APvhvoLuNX/tgTPjDLyMj3vv2L2ZKb1k31aLwek7nkdYjvqM7WdI
HJVwsaMX7iZ6lLoA3sd30TieUWdA+0wwrR70RY5YdxyqZQ+invVXs8b4UW8CAwEA
AaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFPOIuWEc4Vc8VAqXlwgD9ubuHlwHMB8G
A1UdIwQYMBaAFBljZvke47WVMmQjD5bdtV2n8x/mMA0GCSqGSIb3DQEBCwUAA4IB
AQCOksyqNhLqDLz4S3sZK06ab3+jqXULldePBXbpnJpZI8Y4dM8zVJsT9T3L8Tz/
Ca23TfaIfvsAQSNCsqLtxzFPFNGDkYOvQiZx4/BkSxbxrVlIVfTKdTZ9cC8kDWos
Zmp24MECmDI5oE9EGojGl5csTxoyvnLZp+KBquWR5kK68Fc0hXcU9j8WXJhQprak
1hsv60re8HTKpuWl9YNmeTHg13zWjiVau8JR1PoOL7UXtJv+Jwbl2Fw9bblahB7X
6H3RqUESVBJdDxVeOyXxGLtizGaTh2XMZC2co5xkfsN9cmVH2nk6l5uXIWKceATv
25cXJZJXahBFazDu6aX1hF8Q
-----END CERTIFICATE-----
[root@KOU CA]# 
[root@KOU CA]# 
[root@KOU CA]# 
[root@KOU CA]# 
[root@KOU CA]# 
[root@KOU CA]# scp certs/httpd.crt root@192.168.206.66:/etc/httpd
The authenticity of host '192.168.206.66 (192.168.206.66)' can't be established.
ECDSA key fingerprint is SHA256:PSFFIGtRXOF5EPmovLwLoYuuHFqYRAIgmus0XJHa3mY.
ECDSA key fingerprint is MD5:a4:1b:d2:cf:fd:c7:81:aa:3d:57:00:7a:7e:56:ea:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.206.66' (ECDSA) to the list of known hosts.
root@192.168.206.66's password: 
httpd.crt                                                                                                                                                100% 4622     1.9MB/s   00:00    
[root@KOU CA]# 
[root@KOU CA]# more index.txt
V	190531171612Z		08	unknown	/C=CN/ST=GuangDong/O=DStec/OU=OPs/CN=192.168.206.66/emailAddress=aa@kk.cn
[root@KOU CA]# 

7.4> CA服务器把签署好的证书发给申请者;

 

Leave a Reply

Your email address will not be published. Required fields are marked *