文档章节

apache 搭建双向证书认证

niceguy_php
 niceguy_php
发布于 2014/04/02 21:38
字数 1112
阅读 162
收藏 2

一. CA自签


1.建立 CA 目录结构

mkdir -p ./demoCA/{private,newcerts}

touch ./demoCA/index.txt

echo 01 > ./demoCA/serial

# 生成 CA 的 RSA 密钥对

openssl genrsa -des3 -out ./demoCA/private/cakey.pem 2048

# 生成 CA 证书请求

openssl req -new -x509  -days 3650 -key ./demoCA/private/cakey.pem -out careq.pem

#复制一份证书

cp cacert.pem ca.crt

二.生成和签发服务器、客户端证书

#修改openssl配置文件

/etc/pki/tls/openssl.cnf

设置好

dir             = /root/ssl/demoCA (生成CA的路径)

# 生成服务器的 RSA 密钥对

openssl genrsa -des3 -out server.key

运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令。

去除key文件口令的命令:

openssl rsa -in server.key -out server.key

# 生成服务器证书请求

openssl req -new -days 3650 -key server.key -out server.csr

# 使用 CA 签发服务器证书

openssl ca -in server.csr -out server.crt -days 3650

也可以直接指定好根证书的和其私钥的路径

openssl ca -in server.csr -out server.crt -cert ./demoCA/cacert.pem -keyfile ./demoCA/private/cakey.pem


*生成用户的 RSA 密钥对

openssl genrsa -des3 -out user.key

*生成用户证书请求

openssl req -new -days 3650 -key user.key -out user.csr

*使用 CA 签发用户证书

openssl ca -in user.csr -out user.crt

三.导出用户证书client.pfx供浏览器使用

openssl pkcs12 -export -clcerts -in user.cert -inkey user.key -out client.pfx


四.apache的ssl配置

ServerName free51.alipay.net

LogLevel info

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

SSLCertificateFile /opt/install/httpd/conf/sslcrt/server.crt

#SSLCertificateFile 指定服务器使用的证书。该指令用于指定服务器持有的X.509证书(PEM编码),其中还可以包含对应的RSA或DSA私钥。如果其中包含的私钥已经使用 密语加密,那么在 Apache启动的时候将会提示输入密语。如果服务器同时使用了RSA和DSA两种证书,那么该指令可以使用两次来分别指定两种证书的位置。

SSLCertificateKeyFile /opt/install/httpd/conf/sslcrt/server.key

#SSLCertificateKeyFile 指定了服务器私钥文件。如果SSLCertificateFile指定的服务器证书文件中不包含相应的私钥,那么就必须使用该指令,否则就不需要使用。我 们反对在服务器证书中包含私钥,正确的做法应该是将证书和私钥分开在不同的文件中。如果私钥文件已经使用密语加密,那么在Apache启动的时候将会提示 输入密语。如果服务器同时使用了RSA和DSA两种证书,那么该指令可以使用两次来分别指定两种私钥的位置。

SSLCertificateChainFile /opt/install/httpd/conf/sslcrt/ca.crt #如果有很久级证书就好好配这个。

#SSLCertificateChainFile 指定了一个多合一的CA证书:由直接签发服务器证书的CA证书开始,按证书链顺序回溯,一直到根CA的证书结束,这一系列的CA证书(PEM格式)就构成 了服务器的证书链。这个指令也可以由SSLCACertificatePath指令代替,或者两个一起使用,用于明确的创建服务器的证书链。这个证书链将 被与服务器证书一起发送给客户端。这有利于避免在执行客户端认证时多个CA证书之间出现混淆或冲突。因为虽然将服务器证书链上的某个CA证书放到 SSLCACertificatePath目录中对于证书链结构没什么影响,但是由这个CA签发的客户端证书也会在执行客户端认证的时候同时被认可,这通 常不是你期望的结果。

SSLCACertificateFile /opt/install/httpd/conf/sslcrt/ca.crt

#SSLCACertificateFile 该指令用于客户端认证。这个指令指定了一个多合一的CA证书,只有持有这些CA所签发证书的客户端才允许访问。这个所谓"多合一"证书文件其实就是将多个 PEM格式的证书按照优先级顺序放置在同一个文件中而已。这个指令也可以由SSLCACertificatePath指令代替,或者两个一起使用。

SSLVerifyClient require

#要求进行客户端认证。

SSLVerifyDepth 1

SSLOptions +StdEnvVars

五、ssl链接测试

openssl s_client -connect 10.12.22:443  -showcerts    -state   -CAfile CA.crt
可以使用这个的命令来查看ssl通信的过程


本文转载自:blog.chinaunix.net/uid-21518-id-4171403.html

共有 人打赏支持
niceguy_php
粉丝 2
博文 34
码字总数 8351
作品 0
成都
程序员
私信 提问
Tomcat 配置 HTTPS双向认证

Tomcat 配置 HTTPS双向认证 Tomcat 配置 HTTPS 双向认证 指引说明: 本文档仅提供 Linux 操作系统下的指引 在阅读本指引前请您在 Linux 部署 JDK 和 Tomcatserver 为了 Tomcat 支持使用腾讯提...

点点的博客
2017/12/21
0
0
你想要了解但是却羞于发问的有关SSL的一切

你想要了解但是却羞于发问的有关SSL的一切 或者更准确的说,“我所知的关于的SSL的实事”。本文(以及Spring Boot应用指南)将告诉你在一些通用服务(web服务器、浏览器认证、单元和集成测试)...

drkaka
2016/01/11
7.3K
16
nginx SSL证书配置(双向认证)

最近在做一个项目,有个接口安全性要求比较高,所以要用到双向认证,就开始究了一下具体搭建 具体是参考这里:http://blog.csdn.net/kunoy/article/details/8239653 遇到的问题作一下笔记 主...

super超记
2016/10/18
185
0
https环境搭建配置(基于Tomcat和Nginx)

一、基于Tomcat、JDK内置密钥工具: 1、生成服务端证书库(keystore证书库文件),用于客户端验证服务端的真实性 keytool -genkey -v -alias key_server -keyalg RSA -keystore e:server.keys...

谭又中
2014/10/23
0
6
深入理解HTTPS及在iOS系统中适配HTTPS类型网络请求(下)

深入理解HTTPS及在iOS系统中适配HTTPS类型网络请求(下) 一、引言 上一篇博客详细讨论了HTTPS协议的原理,搭建HTTPS测试环境以及证书的相关基础。本篇博客将继续探讨更多在iOS开发中适配HTTPS...

珲少
2016/12/18
271
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
7
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部