openssl构建CA认证
版本:openssl-1.0.1e
/usr/local/nginx/demoCA/ # ca证书存放位置
/usr/local/nginx/conf/ssl/ #服务器证书存放位置
/home/samba/ca/ #存放要发布的证书
编译安装
1 2 3 4 5 6 |
tar zxvf openssl-1.0.1e.tar.gzcd openssl-1.0.1e ./confg --prefix=/usr/local/ssl shared zlib-dynamic enable-camelliamake && make installecho "/usr/local/ssl/lib/" >/etc/ld.so.conf.d/usr_local_ssl_lib.conf/sbin/ldconfig |
CA 实现介绍
1.创建CA根中心用于签名
利用openssl的命令生成加密的CA根私钥( -keyout 指定),然后自己(-x509 参数)给自己签名,签名后的( -out 指定)文件即CA的公钥,用于验证CA私钥签名的证书
openssl req -new -x509 -passout pass:ca_password -newkey rsa:2048 -days 7305 -keyout /usr/local/nginx/demoCA/private/cakey.pem -config /usr/local/ssl/openssl.cnf -out /usr/local/nginx/demoCA/cacert.pem -subj '/C=CN/ST=ZHEJIANG/L=HANGZHOU/O=CAID/OU=CAID CA Center/CN=CAID ROOT CA/emailAddress=checaide@outlook.com' |
2.创建用于服务器的CA证书
1)创建服务器私钥及给CA根请求其签名的csr文件
openssl req -new -passout pass:server_password -sha1 -newkey rsa:1024 -keyout /usr/local/nginx/demoCA/private/server.key -out /usr/local/nginx/demoCA/csr/client.csr -config /usr/local/ssl/openssl.cnf -subj '/C=CN/ST=ZHEJIANG/L=HANGZHOU/O=CAID/OU=CAID Web Services/CN=127.0.0.1/emailAddress=420400178@qq.com' |
2)CA根用自己的私钥对.csr进行签名
openssl ca -passin pass:ca_password -days 3650 -config /usr/local/ssl/openssl.cnf -policy policy_match -extensions ssl_server -out /usr/local/nginx/demoCA/certs/server.pem -infiles /usr/local/nginx/demoCA/csr/client.csr |
这样便生出服务器的私钥server.key,被CA私钥签名后的公钥server.pem ,CA根的公钥cacert.pem
在apache中设定SSL的配置指定参数就可以用CA对SSL连接进行验证
//* -subj 内参数可用于匹配验证连接PHP即可读取该信息 */
3.创建用于客户端的证书
1)同server-1
openssl req -new -passout pass:user_password -sha1 -newkey rsa:1024 -keyout /usr/local/nginx/demoCA/private/client_01001.key -out /usr/local/nginx/demoCA/csr/client.csr -config /usr/local/ssl/openssl.cnf -subj '/C=CN/ST=JIANGSU/L=CHANGZHOU/O=CAID/OU=CAID_01/CN=client_01001/emailAddress=CAID_2013@gmail.com' |
2)同server-2,通过expect-shell脚本sgin.exp签名,免去交互
expect sgin.exp ca_password 365 policy_anything ssl_client client_01001 |
4.导出CA的公钥,客户端的私钥&被CA签名的公钥
1)导出CA的公钥
openssl x509 -in /usr/local/nginx/demoCA/cacert.pem -out /home/samba/ca/CA_Root.cer |
2)导出客户端的私钥+被CA签名的公钥,文件被以pkcs12格式编码输出,import_password是客户端导入文件时的密码
openssl pkcs12 -passin pass:user_password -export -clcerts -in /usr/local/nginx/demoCA/certs/client_01001.pem -inkey /usr/local/nginx/demoCA/private/client_01001.key -passout pass:import_password -camellia256 -out /home/samba/ca/client_01001.pfx -name "luck_01001" |
这样客户端拥有CA_Root.cer,client_01001.pfx。导入CA_Root.cer文件就可以验证CA签名的网站,导入client_01001.pfx文件网站就可以验证客户端身份
5.证书吊销
假设某客户端要取消其查看网站SSL保护的链接,则吊销他的证书即可
1)吊销已经签名的client_01001.pem
openssl ca -passin pass:ca_password -keyfile /usr/local/nginx/demoCA/private/cakey.pem -cert /usr/local/nginx/demoCA/cacert.pem -revoke /usr/local/nginx/demoCA/certs/client_01001.pem -config /usr/local/ssl/openssl.cnf |
2)生成吊销证书列表crl.pem,用于服务器检测链接进入的证书是否可用
openssl ca -gencrl -keyfile /usr/local/nginx/demoCA/private/cakey.pem -cert /usr/local/nginx/demoCA/cacert.pem -out /usr/local/nginx/demoCA/crl.pem -config /usr/local/ssl/openssl.cnf -passin pass:ca_password |
sgin.exp
#!/usr/bin/expectset passwd [lindex $argv 0]set days [lindex $argv 1]set policy [lindex $argv 2]set extension [lindex $argv 3]set name [lindex $argv 4]spawn /usr/local/ssl/bin/openssl ca -passin pass:$passwd -days $days -config /usr/local/ssl/openssl.cnf -policy $policy -extensions $extension -out /usr/local/nginx/demoCA/certs/$name.pem -infiles /usr/local/nginx/demoCA/csr/client.csr expect {"y/n" { send "y\r";exp_continue }"y/n" { send "y\r" }} |
ca-install.sh
#! /bin/bashrm -rf /usr/local/nginx/demoCA/ # ca证书存放位置rm -rf /usr/local/nginx/conf/ssl/ #服务器证书存放位置mkdir -p /home/samba/ca/ #存放要发布的证书mkdir -p /usr/local/nginx/conf/ssl/mkdir -p /usr/local/nginx/demoCA/{private,newcerts,crl,certs,csr,p12}touch /usr/local/nginx/demoCA/{serial,crlnumber,index.txt,private/.rand}#echo 0 > /usr/local/nginx/demoCA/index.txt echo 00 >/usr/local/nginx/demoCA/serialecho 00 >/usr/local/nginx/demoCA/crlnumber/usr/local/ssl/bin/openssl rand -out /usr/local/nginx/demoCA/private/.rand 1024#生成CA中心/usr/local/ssl/bin/openssl req -new -x509 -passout pass:ca_password -newkey rsa:2048 -keyout /usr/local/nginx/demoCA/private/cakey.pem -config /usr/local/ssl/openssl.cnf -out /usr/local/nginx/demoCA/cacert.pem -subj '/C=CN/ST=ZHEJIANG/L=HANGZHOU/O=CAID/OU=CAID CA Center/CN=CAID ROOT CA/emailAddress=checaide@outlook.com'#签名服务器相关/usr/local/ssl/bin/openssl req -new -passout pass:server_password -sha1 -newkey rsa:1024 -keyout /usr/local/nginx/demoCA/private/server.key -out /usr/local/nginx/demoCA/csr/client.csr -config /usr/local/ssl/openssl.cnf -subj '/C=CN/ST=ZHEJIANG/L=HANGZHOU/O=CAID/OU=CAID Web Services/CN=127.0.0.1/emailAddress=420400178@outlook.com'#使用sgin.exp脚本进行签名/usr/local/bin/expect sgin.exp ca_password 3650 policy_match ssl_server server#移动至web服务器下,去掉调用私钥时候的密码验证mv {/usr/local/nginx/demoCA/certs/server.pem,/usr/local/nginx/demoCA/private/server.key} /usr/local/nginx/conf/ssl//usr/local/ssl/bin/openssl rsa -passin pass:server_password </usr/local/nginx/conf/ssl/server.key >/usr/local/nginx/conf/ssl/serverkey.pem#签名客户端证书/usr/local/ssl/bin/openssl req -new -passout pass:user_password -sha1 -newkey rsa:1024 -keyout /usr/local/nginx/demoCA/private/client_01001.key -out /usr/local/nginx/demoCA/csr/client.csr -config /usr/local/ssl/openssl.cnf -subj '/C=CN/ST=JIANGSU/L=CHANGZHOU/O=CAID/OU=CAID_01/OU=CAID_GROUP1/CN=client_01001/emailAddress=CAIDer_2013@outlook.com'expect sgin.exp ca_password 365 policy_anything ssl_client client_01001#导出CA公钥/usr/local/ssl/bin/openssl x509 -in /usr/local/nginx/demoCA/cacert.pem -out /home/samba/ca/CA_Root.cer#导出客户端的私钥+被CA签名的公钥/usr/local/ssl/bin/openssl pkcs12 -passin pass:user_password -export -clcerts -in /usr/local/nginx/demoCA/certs/client_01001.pem -inkey /usr/local/nginx/demoCA/private/client_01001.key -passout pass:import_password -camellia256 -out /home/samba/ca/client_01001.pfx -name "good luck 01001" #=============#吊销客户端证书#/usr/local/ssl/bin/openssl ca -passin pass:ca_password -revoke /usr/local/nginx/demoCA/certs/client_01001.pem -config /usr/local/ssl/openssl.cnf/usr/local/ssl/bin/openssl ca -passin pass:ca_password -gencrl -config /usr/local/ssl/openssl.cnf -out /usr/local/nginx/demoCA/crl.pem#web服务器检测吊销列表ln -s /usr/local/nginx/demoCA/crl.pem /usr/local/nginx/conf/ssl/crl.pem
转载于:https://blog.51cto.com/caidui/1676038
openssl构建CA认证相关推荐
- OpenSSL与CA认证
一.SSL/TLS SSL又被称之为安全的套接字层(Secure Socket Layer),一种安全的加密协议,是嵌套在应用层与传输层之间的一个半层.用户在浏览器中需要加密的时候输入https,则数 ...
- Openssl:构建CA的过程并实现web服务基于https访问的网络架构
本文环境 RedHat 5.8 本博文主要内容:加密算法.CA介绍和配置等.web利用CA认证构建https安全传输 1.在互联网上数据额传输有两种:明文传输和加密传输.明文传输的协议有:ftp.ht ...
- Openssl搭建私有CA认证
概述 CA英文全称Certification Authority,即数字证书认机构.从广义上来说,CA是负责发放和管理数字证书的权威机构,并作为用户数字认证中受信任的第三方,承担公钥体系(PKI)中公 ...
- 创建自己的CA机构 - openssl cert 双向认证
为什么80%的码农都做不了架构师?>>> 1. 创建 openssl.cnf [ ca ] default_ca = subchen_ca[ subchen_ca ] cert ...
- 构建CA证书详解过程步骤
目录 一.CA中心申请证书的过程 二.CA介绍 三.构建私有CA 1.环境: 2.检查安装openSSL 3.查看配置文件 4.根证书服务器目录 5.创建所需文件 6.创建密钥 7.生成自签名证书 8 ...
- CA认证原理以及实现(上)
转载自:https://blog.csdn.net/lujiancs/article/details/38487235 原理基础 数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公 ...
- CA认证原理以及实现(下)
在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建. OPEN SSL 环境搭建 在基础原理中我们提到了两种认证服务,单项认证服务和双向认证服务,我们就以双向认证服务举例说明. OpenSSL ...
- openssl https 单向认证连接成功示例
openssl https 单向认证连接成功示例 研究这个玩意也有几天的时间了,刚学C 因为不熟悉编译折腾了不少时间,终于弄通了,发个随笔给研究openssl https的同学一点提示吧. 环境: = ...
- LNMP与CA认证的童话故事
在前面的一篇博客中,我已经介绍过,如何通过源码编译安装LAMP,见教你源码编译制作LAMP详细过程 ,这里就介绍下如何编译安装LNMP,以及如何在LNMP中添加ssl认证. LNMP,也叫做LEMP. ...
最新文章
- 百度短视频推荐系统的目标设计
- 数据库表初始化,删除所有数据后主键ID从1开始
- Android插件化开发之AMS与应用程序(客户端ActivityThread、Instrumentation、Activity)通信模型分析
- sata接口测试软件,如何查看电脑是否支持USB 3.0?Hwinfo32检测SATA端口的方法
- 同等学力计算机综合难吗,计算机在职研究生考试难度大吗?这种方式通过率高...
- Sentinel服务熔断只配置fallback_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0050
- 地图比例尺与空间分辨率之间的关系_地图比例尺与分辨率
- 【编译原理】 CS143 斯坦福大学公开课 专栏总揽
- K-S检验两样本分布是否相同
- 中国甜味剂粉市场趋势报告、技术动态创新及市场预测
- 明明白白lua的协程(coroutine)
- 服务器麒麟系统是arm还是x64,麒麟arm环境安装ceph
- Win11预览体验计划显示Your PC does not meet the minimum hardware requirements...的解决方案
- 能力不够,你就态度好点
- 一句代码让电脑定时重启,关机,取消关机
- 如何编辑二维码内容并批量生成
- 全程电子商务崛起山东
- 15 | 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?
- 交换机端口的PVID
- typemonkey怎么安装?typemonkey怎么用?ae脚本typemonkey教程