文档章节

apache 搭建双向证书认证

niceguy_php
 niceguy_php
发布于 2014/04/02 21:38
字数 1112
阅读 148
收藏 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
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
Apache httpd开启SSL

必要软件 apache httpd 2.4(windows) perl 5 (windows) openssl (windows) 安装软件 因为手上没有linux的空余机器,所以一切操作都是在windows平台上。安装以上三个软件的win版,略。 配置h...

xpbug
2014/02/06
0
3

没有更多内容

加载失败,请刷新页面

加载更多

Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
28分钟前
0
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
30分钟前
0
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
37分钟前
2
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
2
0
聊聊storm trident batch的分流与聚合

序 本文主要研究一下storm trident batch的分流与聚合 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout) .p......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部