共计 6649 个字符,预计需要花费 17 分钟才能阅读完成。
一、OpenSSL:CA默认配置信息
1.证书签发机构 CA: 公共信任CA、私有CA
建立私有 CA 方式如下:
小范围测试使用openssl、
大范围维护大量证书企业使用 OpenCA( 对openssl进行了二次封装,更加方便使用)
2.openssl 配置文件:/etc/pki/tls/openssl.cnf
[root@localhost tmp]# cat /etc/pki/tls/openssl.cnf
该配置文件中以 “[ 配置段 ]”, 的形式配置相关信息
====================================openssl.cnf部分内容摘要=====================================
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
######################################################################################
[ca] #CA相关配置段
default_ca = CA_default # The default ca section # 默认 CA 在[CA_default]配置
######################################################################################
[CA_default] # 默认当做 CA 的工作环境
dir = /etc/pki/CA # Where everything is kept默认工作目录,变量形式
certs = $dir/certs # Where the issued certs are kept签发的证书位置
crl_dir = $dir/crl # Where the issued crl are kept吊销的证书位置
database = $dir/index.txt # database index file.颁发过的证书索引文件
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate指明 CA 的自签证书
serial = $dir/serial # The current serial number指明当前证书序列号,第一次要指定
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key,CA自己的私钥
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
# Comment out the following two lines for the “traditional”
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
default_days = 365 # how long to certify for证书的默认有效期
default_crl_days= 30 # how long before next CRL默认声明有效期
default_md = sha256 # use SHA-256 by default默认的生成算法
preserve = no # keep passed DN ordering
####################################################################
[req] # 向 CA 证书签署发起注册请求相关属性
default_bits = 2048
default_md = sha256
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
===============================================================================================
二、OpenSSL:创建私有证书签发机构 CA 步骤
在确定配置为 CA 的服务 器主机 上生成一个自签证书,并为 CA 提供所需要的目录及文件;
在真正的通信过程中 CA 服务器主机不需要网络参与,只需要参与到签名中,不需要提供服务
1.生成私钥;
~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
因为在默认配置文件中默认配置/etc/pki/CA/private/cakey.pem,所以指定目录和文件名要和配置文件一致
2.生成 CA 自签证书;
req – PKCS#10 certificate request and certificate generating utility,证书请求及生成工具;
[root@localhost tmp]# man req
~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
/etc/pki/CA/cacert.pem:配置文件中第一的目录及文件名称
-new:生成新证书签署请求;
-x509:生成自签格式证书,专用于创建私有 CA 时;
-key:生成请求时用到的私有文件路径;
-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;
-days:证书的有效时长,单位是 day;
注意:
1)-key /etc/pki/CA/private/cakey.pem指明的是私钥的位置,知识因为此处会自动抽取出私钥中的公钥
2)req只能发起签署请求,需要加 -x509 参数实现自己发出请求,自己签署。非自签无需增加此参数
[root@localhost tmp]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
====================================填写证书请求相关信息=======================================
You are about to be asked to enter information that will be incorporatedinto 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) []: # 省或洲的完整名称
Locality Name (eg, city) [Default City]: # 所在位置的名称 ( 默认为城市)
Organization Name (eg, company) [Default Company Ltd]: # 组织机构名称 ( 默认为公司)
Organizational Unit Name (eg, section) []: # 组织机构单元名称 (eg. 部门)
Common Name (eg, your name or your server’s hostname) []: # 持有者名或者所在服务器主机名 ( 即域名)
Email Address []: # 管理员邮件地址,可以省略
================================================================================================
3.为 CA 提供所需的目录及文件;
~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} #当不存在时需要创建签发证书、吊销证书、新证书目录
~]# touch /etc/pki/CA/{serial,index.txt} #创建证书序列号文件、证书索引文件
~]# echo 01 > /etc/pki/CA/serial # 第一次创建的时候需要给予证书序列号
三、OpenSSL;服务申请证书签署实现 SSL 安全通信
要用到证书进行安全通信的服务器,需要向 CA 请求签署证书;
需要签署的服务无需和 CA 证书签署机构主机在同一台服务器上。
此处以 httpd 服务为例进行演示,步骤如下:
演示环境:
httpd服务放置 172.16.249.210 主机 ( 此处为 rpm 包安装)
CA私有签机构放置 172.16. 249.18 主机:
1.用到证书的 服务器 生成私钥;
~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) # 生成私钥
生成 httpd 服务的私钥创建时候无需在 /etc/pki/CA 创建,/etc/pki/CA目录仅在创建 CA 主机时候
2.生成证书签署请求
~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
1) *.csr表示证书签署请求文件
2)要保证和签署机构 CA 签署机构信息一致
3.将请求通过可靠方式发送给 CA 主机
~]# scp /etc/httpd/ssl/httpd.csr root@172.16.249.18:/tmp/
4.在 CA 主机上签署证书
~]# openssl ca -in/tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
*.crt:表示证书文件
-days :签署证书的有效期
注意:此处需要自己去查看信息是否正确,并确定是否给予签署证书
5.查看所签署的证书信息
方法一:~]# cat /etc/pki/CA/index.txt
V:表示已经签署的
01:表示证书序列号
/C=CN/ST=Beijing/O=… …: 表示主题信息 ( 主题标示)
方法二:查看证书中的信息 (CA 或者服务端均可):
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
-serial :序列号 -subject:主题信息
6.将 CA 签署机构的 .crt 证书发送给服务器
~]# scp /etc/pki/CA/certs/httpd.crt root@172.16.249.210:/etc/httpd/ssl
注意:第一次进行主机间基于 ssh 的scp操作会接收一个证书,Queue要你那认证
7.删除服务器和 CA 主机上签署前的 *.csr 文件,确保安全
httpd主机:~]# rm -rf /etc/httpd/ssl/httpd.csr
CA主机:~]# rm -rf /tmp/httpd.csr
四、OpenSSL:私有 CA 证书签署机构 吊销证书
1.客户端获取要吊销的证书的 serial(在使用证书的主机 上执行)
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
2.CA 主机吊销证书
先根据客户提交的 serial 和 subject 信息,对比其与本机数据库 index.txt 中存储的是否一致;
在 /etc/pki/CA/crets/* 下生成证书后,会在 /etc/pki/CA/newcrets/* 以对应证书命名为 SERIAL.pem 文件存放
吊销:
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem 其中 SERIAL 要换成证书真正的序列号:eg. 01.pem
3.生成吊销证书的吊销编号(第一次吊销证书时执行)
# echo 01 > /etc/pki/CA/crlnumber
4.更新证书吊销列表
# openssl ca -gencrl -out thisca.crl
5.查看 crl 文件:
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
更多 OpenSSL 相关内容可以查看以下的有用链接:
使用 OpenSSL 命令行构建 CA 及证书 http://www.linuxidc.com/Linux/2015-10/124682.htm
Ubuntu 安装 OpenSSL http://www.linuxidc.com/Linux/2015-10/124001.htm
通过 OpenSSL 提供 FTP+SSL/TLS 认证功能,并实现安全数据传输 http://www.linuxidc.com/Linux/2013-05/84986.htm
Linux 下使用 OpenSSL 生成证书 http://www.linuxidc.com/Linux/2015-05/117034.htm
利用 OpenSSL 签署多域名证书 http://www.linuxidc.com/Linux/2014-10/108222.htm
在 OpenSSL 中添加自定义加密算法 http://www.linuxidc.com/Linux/2015-08/121749.htm
OpenSSL 的详细介绍:请点这里
OpenSSL 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-01/127612.htm