美文网首页
CA证书制作实战

CA证书制作实战

作者: david161 | 来源:发表于2022-07-28 09:08 被阅读0次

需求:
自建CA 颁发证书,使用自签名证书来构建安全网络,所谓自签名证书,就是自己扮演 CA 机构,自 己给自己的服务器颁发证书。

OpenSSL

image.png

OpenSSL是一个以C语言编写现了SSL与TLS协议的开源的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份。这个包广泛被应用在互联网的网页服务器上。OpenSSL支持Linux、Windows、BSD(Unix的衍生系统)、Mac等平台,这使得OpenSSL具有广泛的适用性。
OpenSSL整个软件包大概可以分成三个主要的功能部分:
加密算法库
对称加密算法:
非对称加密算法
信息摘要算法
SSL协议库
OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议
OpenSSL也实现了TLSv1.0+
应用程序
多功能的命令行工具,可以实现加密解密、密钥生成、密钥和证书管理、自建CA和签名等功能

过程

  1. CA生成根密钥
  2. CA生成根证书
  3. Nginx生成私钥
  4. Nginx申请证书
  5. CA签发
  6. Nginx安装证书,配置

颁发证书

默认情况下Linux操作系统已经内置安装了OpenSSL,可以通过 openssl version 查看版本号
但是在使用前,需要注意下当前OpenSSL的库的版本,因为版本1.0.1是一个很重要的风水岭版本,1.0.1是第一个支持TLS1.1和1.2的版本。
1)修改配置:
在CA目录下创建两个初始文件,维护序列号。通过CA机构签发的每个证书都有一个唯一的序列号。

cd /etc/pki/CA 
touch index.txt serial 
echo 01 > serial

2)生成根密钥
表示的CA机构的私钥,CA结构签发的每一个证书都要通过自己的私钥进行签名。

cd /etc/pki/CA 
#生成一个2048位的密钥 
openssl genrsa -out private/cakey.pem 2048

3) 生成根证书
使用req命令生成自签证书
-new:表示新的申请
-x509:表示生成自签证书
-key:指定私钥文件
-out:保存证书的位置
-days:指定证书期限
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
会提示输入一些内容,因为是私有的,所以可以随便输入(之前修改的openssl.cnf会在这里呈现),最好记住能与后面保持一致。上面的自签证书cacert.pem 应该生成在 /etc/pki/CA 下。
4)为我们的Nginx服务器生成SSL密钥
环境:
192.168.200.16 CA机构服务器
192.168.200.16 Nginx服务器
申请SSL证书本质上就是服务器升级支持HTTPS,非对称加密(公钥和私钥)。
以上都是在CA服务器上做的操作,而且只需进行一次,现在转到nginx服务器上执行:
安装Nginx

#1.安装该rpm 
rpm -ivh 
http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release- centos-7-0.el7.ngx.noarch.rpm 
#安装该rpm后,我们就能在/etc/yum.repos.d/ 目录中看到一个名为 nginx.repo 的文件。 

#2.安装完Nginx源后,就可以正式安装Nginx了。 
yum install -y nginx 

#3.查看所在目录 
whereis nginx

cd /etc/nginx/ssl 
#为我们的nginx web服务器生成ssl密钥 
openssl genrsa -out nginx.key 2048

5)为nginx生成证书签署请求
该过程会生成一个文件,包含了证书相关的信息,但是该文件不是证书,生成证书的请求文件。
该文件需要发送给CA机构,由CA签名后生成一个证书文件。

openssl req -new -key nginx.key -out nginx.csr
 ... 
Country Name (2 letter code) [AU]:CN 
State or Province Name (full name) [Some-State]:GD 
Locality Name (eg, city) []:SZ 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:COMPANY 
Organizational Unit Name (eg, section) []:IT_SECTION 
Common Name (e.g. server FQDN or YOUR name) 
[]:your.domain.com 
Email Address []: 
Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []: 
An optional company name []: 
...

同样会提示输入一些内容,其它随便,除了 Commone Name 一定要是你要授予证书的服务器域名或主机名,challenge password不填。
6)私有CA根据请求来签署证书
接下来要把上一步生成的证书请求csr文件,发到CA服务器上,在CA上执行:
openssl ca -in nginx.csr -out nginx.crt


image.png

上面签发过程其实默认使用了 -cert cacert.pem -keyfile cakey.pem ,这两个文件就是前两步生成的位于 /etc/pki/CA 下的根密钥和根证书。将生成的crt证书发回nginx服务器使用。
到此我们已经拥有了建立SSL安全连接所需要的所有文件,并且服务器的crt和key都位于配置的目录下,剩下的是如何使用证书的问题。

使用 SSL证书

1)Nginx 使用 SSL 证书
在本地安装完成证书(在Nginx服务器配置)也就意味着Java Web应用已经完成了从http到https协议的升级
以 Nginx 为例,在 Nginx 中新建ssl文件夹,将生成的crt和key放入其中,配置文件中加入以下代码:

#修改Nginx的配置文件,安装SSL证书 
cd /etc/nginx/conf.d 
vi default.conf 
listen 443 ssl http2;#https协议监听的端口号是443端口,基于http2进行工作的。 
ssl_certificate /etc/nginx/ssl/nginx.crt; # 指向 ssl 文件夹中的 crt 文件 
ssl_certificate_key /etc/nginx/ssl/nginx.key; # 指向 ssl 文件夹中的 key 文件 
ssl_session_timeout 5m; 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
#启用false start加速 
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; ssl_prefer_server_ciphers on;
image.png

2)启动Nginx

#切换到可执行目录 
cd /usr/sbin/ ./nginx 
#查看启动状态 
ps -ef|grep nginx

3)访问测试
curl https://192.168.200.21
但是,我们自己签发的证书,是不受其他服务器信任的,当发起 curl 请求时,
会出现以下情况:证书无效或无法验证错误。
这时候,我们就需要将我们 CA 服务器的根证书导入到这台服务器中。
4)添加证书:

#安装 ca-certificates package: 
yum install ca-certificates 

#启用dynamic CA configuration feature: 
update-ca-trust force-enable 

#将证书文件放到 /etc/pki/ca-trust/source/anchors/ 目录下
 mv /etc/pki/CA/cacert.pem /etc/pki/ca-trust/source/anchors/ 

#执行更新: 
update-ca-trust extract

5)修改本地host文件
cd /etc
vi hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 
192.168.200.21 
yj.com

6)访问测试
curl https://yj.com

相关文章

  • CA证书制作实战

    需求:自建CA 颁发证书,使用自签名证书来构建安全网络,所谓自签名证书,就是自己扮演 CA 机构,自 己给自己的服...

  • openvpn

    一、openvpn原理二、安装openvpn三、制作相关证书3.1 制作CA证书3.2 制作Server端证书3....

  • CA证书制作

    1. Create your own CA certificate: 2. Generate a Certific...

  • Nginx+SSL实现双向认证

    首先创建一个目录 CA与自签名 制作CA私钥 制作 CA 根证书(公钥) 注意: 1、Common Name 可以...

  • OpenSSL生成SSL证书

    1.制作CA证书 ca.key CA私钥步骤与使用OpenSSL自签发服务器https证书所述大同小异。opens...

  • openssl

    制作自签名证书(无用户名密码保护) 制作自签名证书(有用户名密码保护) 制作CA根证书并为第三方颁发证书 获取服务...

  • HTTPS网站 | SSL证书和ca证书有何区别?

    SSL证书和ca证书 你知道SSL证书和ca证书有何区别吗?其实SSL证书是ca证书中的一种,CA是数字证书管理机...

  • 局域网通过 itms-services(https) 协议安装

    1. 创建 CA 根证书 CA 是证书名字,自己改 2. 基于上边的 CA 证书,再创建证书 mycert 是证书...

  • kubernetes rbac只读账户

    创建只读rbac账户 readonly.json ca-config-readonly.json 下载证书制作工具...

  • 数字证书格式简述和OPENSSL证书制作

    各种数字证书的格式总结. 1.证书编码方式分类 2.证书包含内容分类 3.证书文件类型 4.openssl制作CA...

网友评论

      本文标题:CA证书制作实战

      本文链接:https://www.haomeiwen.com/subject/ezzgirtx.html