yum https ssl双向认证 证书申请
本文将着重介绍从ssl证书申请到搭建yum使用https双向认证完成rpm包安装的流程,具体https双向认证的原理在这不做详细的描述,认证的详细描述的原理可以参考: https://blog.csdn.net/duanbokan/article/details/50847612
以下是详细流程:
一. 申请证书
1. 搭建自己的CA服务器
制作本地的CA:
/etc/pki/CA目录,就是CA默认的工作目录
/etc/pki/tls/openssl.conf 是openssl的配置文件
/etc/pki/CA/private 存放我们自己建的CA的私钥
cd /etc/pki/tls
vi openssl.conf
找到[ CA_default ]行:
把"dir = ../../CA"改为"dir = /etc/pki/CA,即把我们CA的工作目录使用绝对路径来定义
cd /etc/pki/CA
(umask 077; openssl genrsa 2018 > private/cakey.pem)
创建这个文件,并直接更改它的权限;文件的名字是固定的,配置文件中定义好的,cakey.pem是用于存放CA自己的私钥,CA虽然是授权的发证单位,但自己也要有私钥来实现数字签名,来区分不同的CA
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
会自动提取到公钥,创建cacet.pem这个证书,这个证书是CA本身的证书,格式为x509。以后CA就可以给别人发证了。
req:申请证书
-new:表示是新发的申请
-x509:指定我们的CA证书的格式
-key:指定一个私钥文件
-out:从我们知道的私钥中提取公钥信息,并保存至cacert.pem文件中
-days:指定证书的有效期
命令执行之后会出现这些信息让填入:
第一个:我们要创建的CA所在的国家,两个字符
第二个:我们要创建的CA所在的省份
第三个:我们要创建的CA所在的城市
第四个:我们要创建的CA的公司名称
第五个:CA申请者所在的部门
第六个:我们要创建的CA服务器
第七个:我们要创建的CA的邮箱
mkdir certs crl newcerts
certs 为所签证书的目录
crl为 所吊销的证书的目录
newcerts 要签的新证书的目录
touch index.txt serial crlnumber
echo 01 > serial
echo 01 > crlnumber
通过这几个步骤,我们创建了CA必须的几个文件,至此我们的CA服务器就建好了
2. 申请服务端公钥及证书
生成服务端key server.key
openssl genrsa -out server.key 1024
生成服务端请求文件 server.csr
openssl req -new -out server.csr -key server.key
填入证书配置信息:
Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)
State or Province Name (full name) [Some-State]:cq 省
Locality Name (eg, city) []:cq 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:gs 公司名
Organizational Unit Name (eg, section) []:gs 组织或部门名
Common Name (eg, YOUR name) []:test.com 域名(尽量用服务器域名,不然会引起服务器警告)
Email Address []: 邮箱地址
A challenge password []:123456 密码
An optional company name []:gs 公司名
生成服务端证书server.cer
openssl x509 -req -in server.csr -out server.cer -signkey server.key -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -days 3650
3. 生成客户端公钥及证书
生成客户端key client.key:
openssl genrsa -out client.key 1024
生成客户端请求文件client.csr
openssl req -new -out client.csr -key client.key
填入证书配置信息:
Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)
State or Province Name (full name) [Some-State]:cq 省
Locality Name (eg, city) []:cq 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:gs 公司名
Organizational Unit Name (eg, section) []:gs 组织或部门名
Common Name (eg, YOUR name) []:tyl 签发机构\开发者人员(这里随意)
Email Address []: 邮箱地址
A challenge password []:123456 密码
An optional company name []:gs 公司名
生成客户端证书 client.cer:
openssl x509 -req -in client.csr -out client.cer -signkey client.key -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -days 3650
生成客户端p12格式根证书client.p12(可弄可不弄):
openssl pkcs12 -export -clcerts -in client.cer -inkey client.key -out client.p12
二.搭建一个nginx 服务器:
把步骤一中生成的服务器公钥server.key以及证书server.crt放置/etc/nginx/conf.d目录下。
创建一个repo源,以/usr/local/test目录为根目录,首先我在/usr/local/test目录下弄了两个rpm包:
yumdownloader lrzsz-0.12.20-36.el7.x86_64
yumdownloader logstash-5.6.5.rpm
创建repo源
createrepo /usr/local/test
在/etc/nginx/conf.d下创建一个test_yum.repo文件:
server {listen 443 ssl;ssl on; ssl_certificate conf.d/server.crt;ssl_certificate_key conf.d/server.key;ssl_prefer_server_ciphers on; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;# 开启客户端认证ssl_client_certificate cacert.pem;ssl_verify_client on;server_name test.yum.com;index index.php index.html index.htm;location / { root /usr/local/test;} }
检查nginx语法是否有问题:
nginx -t
重新加载nginx配置文件
nginx -s reload
三. yum repo测试
找一台测试机,绑定域名解析,在Linux系统下,可直接在/etc/hosts文件中添加域名到nginx机器ip的指定,以便于寻找到我们刚才搭建的nginx服务器。
在/etc/yum.repos.d目录下添加一个repo配置文件localyum.repo:
[localyum]
name=localyum
baseurl=https://test.yum.com/
failovermethod=priority
enabled=1
gpgcheck=0
sslverify=1
sslclientcert=/root/test/ssl/client/client.cer
sslclientkey=/root/test/ssl/client/client.key
sslcacert=/etc/pki/CA/cacert.pem
baseurl填写https:// 加上证书申请时申请的域名test.yum.com
sslclientcert填写客户端的证书
sslclientkey填写客户端的公钥
sslcacert填写颁发证书的CA服务器的证书
清空yum的cache数据:
yum clean all
查询yum 可用rpm 包:
yum provides lrzsz
查到以下结果:
可以看到yum的确是检索到我们设置的yum源了,并且在该源中查到了我们自己添加的lrzsz的rpm包。
结束!!!
yum https ssl双向认证 证书申请相关推荐
- https ssl单项认证和双向认证以及证书生成
HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层.这里提一下TCP/IP的分层共分为四层:应用 ...
- HTTPS 中双向认证SSL 协议的具体过程
HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器. ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. ③ 客户浏览器检查服务 ...
- 什么是SSL双向认证,与单向认证证书有什么区别?
SSL/TLS 证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是 ...
- JAVA实现发送HTTPS请求(SSL双向认证)
一.项目背景 Java项目需要作为客户端发起HTTPS请求访问服务端,并且需要携带证书进行SSL双向认证,当前提供的证书相关文件有:ca.crt.ca.key.client.crt.client.ke ...
- java https双向验证_java https双向认证证书
// 双向认证证书 KeyStore keyStore = KeyStore.getInstance("PKCS12"); KeyStore trustStore = KeySto ...
- HTTPS|SSL笔记-SSL双向认证成功握手过程(含wireshark分析)
这里只研究连接过程. 整体的流程是这样的 前三个那个SYN.SYN ACK.ACK是TCP三次握手,就不说了. 1. 握手成功后,客户端发送自己支持的加密套,和随机数给服务端,也就是Client He ...
- java客户端带证书访问服务端_客户端与服务器SSL双向认证(客户端:java-服务端:java)...
客户端与服务器SSL双向认证(java-java):含源码 (一)实现技术: JSSE(Java Security Socket Extension) 是Sun为了解决在Internet上的实现安全信 ...
- 【ssl认证、证书】SSL双向认证java实战、keytool创建证书
文章目录 概述 keytool示例 参考 相关文章: //-----------Java SSL begin---------------------- [ssl认证.证书]SSL双向认证和SSL单向 ...
- java代码实现证书生成客户端证书 实现ssl双向认证
目的:实现web项目的ssl双向认证客户端证书代码生成. 使用openssl生成ca证书和服务端证书,当然也可以通过代码实现 1)创建CA私钥,创建目录ca openssl genrsa -out c ...
最新文章
- OpenAI教GPT-3学会上网,「全知全能」的AI模型上线了
- devserver配置_vue.config.js的配置
- 北斗通信运营商_国内首个“北斗+5G”应用方案发布 配套5G产品将于年底量产上市...
- 计算机的社会应用PPT,《电子计算机的发展与应用》ppt说课稿信息技术七上.ppt...
- java 既不是内部命令也不是外部命令的解决办法
- 用C#一步步写串口通信
- layui快速上手教程
- cocos2dx 精灵的移动(2)
- 大神李沐被曝离职!投身大模型创业,GitHub项目已开
- 手机棋牌游戏开发的流程是怎样的?
- js封装QQ音乐api
- SQL语句把一个表中的a字段的值赋值到另一个字段b
- DSF data model
- HTML---表格合并(详解)
- matlab 生成 word 表格,Matlab生成Word表格范例代码
- Python AutoCAD 块组
- LMK、ZMK、TMK、ZAK等密钥对照表
- Ubuntu下PyCharm安装中文汉化包
- 从环形图出发,打造高效数据分析流程
- 谁知nmn的功效与作用,nmn真实效果图,吐血整理
热门文章
- python与机器学习
- 实现一个div的背景颜色从左到右慢慢出现
- wince 默认输入法_winCE6.0自带中文输入法加载
- 安卓实现老虎机抽奖的案例
- Git提交gitlab项目string) [], ParseException +FullyQualifiedErrorId :UnexpectedToken 异常,commit failed
- thinkpad重装系统不引导_联想电脑为什么重装win7系统后引导不了
- 用计算机投屏图片,电脑网页投屏到电视
- php计算用户留存,利用Python计算新增用户留存率
- allergro音乐术语什么意思_rit(这是音乐术语)什么意思?
- 租房不要急,Python来帮您(一个超级有用的租房技巧)