首页 Linux正文

配置openssl提供私有CA服务

王昊 Linux 2019-07-19 391 0

OpenSSL是一种功能强大的商用级全功能工具包,适用于传输层安全性(TLS)和安全套接字层(SSL)协议。它也是一个通用的加密库。

实验环境:两台CentOS7虚拟机,主机A为nginx服务器,主机B为CA服务器

实验要求:为nginx服务提供https证书,web证书有限期为365天,并能在Windows浏览器中通过https正常访问

主机B

生成私钥

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 1024)

生成CA自签证书

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365

new:生成新证书签署请求; -x509:生成自签格式证书,专用于创建私有CA时; -key:生成请求时用到的私有文件路径; -out:生成的请求文件路径;自签操作直接生成签署过的证书; -days:证书的有效时长,单位是day;

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 []: # 管理员邮件地址,可以省略

为CA提供所需的目录及文件

mkdir -pv /etc/pki/CA/{certs,crl,newcerts} //当不存在时需要创建签发证书、吊销证书、新证书目录

touch /etc/pki/CA/{serial,index.txt} //创建证书序列号文件、证书索引文件

echo 01 > /etc/pki/CA/serial //第一次创建的时候需要给予证书序列号

主机A

进入存放证书文件的文件夹

mkdir /etc/nginx/ssl

cd /etc/nginx/ssl

生成私钥

(umask 077;openssl genrsa -out nginx.key 2048)

生成证书签署请求

openssl req -new -key nginx.key -out nginx.csr -days 365

*.csr表示证书签署请求文件

注意!

要保证和签署机构CA签署机构信息一致

Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:  #这里写要做https的那个网站的域名,例如:blog.whaoub.com
Email Address []:

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

通过scp命令将csr发送给CA主机

scp /etc/nginx/nginx.csr root@主机B的IP:/root/ //路径自选

回到CA服务器上颁发证书

openssl ca -in /root/nginx.csr -out /etc/pki/CA/certs/nginx.crt -days 365

查看证书信息

cat /etc/pki/CA/index.txt

将生成的crt证书发送给nginx服务器

scp /etc/pki/CA/certs/nginx.crt root@10.30.67.229:/etc/nginx/ssl/

在nginx配置文件中添加以下两行

ssl_certificate "/etc/nginx/ssl/nginx.crt";
ssl_certificate_key "/etc/nginx/ssl/nginx.key";

到目前为止,nginx的https证书就配置完成了,但是在Windows上访问的话,https证书依然提示异常,下面来给大家演示一下解决方法

将CA服务器上的根证书(.pem)转换为 .crt 格式

openssl x509 -outform der -in /etc/pki/CA/cacert.pem -out cacert.crt

将cacert.crt(CA服务器中)导出到Windows中

将nginx.crt(nginx服务器中)导出到Windows中

在Windows中导入证书,以IE11浏览器为例

打开IE浏览器—>Internet选项—>内容—>证书—>导入

CA根证书导入到受信任的根证书颁发机构

子CA证书导入到中级证书颁发机构

验证:

重启IE浏览器,输入https+域名,可看到https证书无异常

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论