apache配置双向ssl认证(笔记)

一. CA自签

Linux下先安装openssl,安装路径于/usr/local/openssl

1.#修改openssl配置文件
/etc/pki/tls/openssl.cnf
设置好
dir = /usr/local/openssl/ssl/misc/demoCA (生成CA的路径)


然后 /usr/local/openssl/ssl/misc/目录下执行命令

./CA.sh -newca    (生成自己服务上的CA服务器)

命令执行后会在该目录下生成demoCA这样的目录..
/demoCA/private/cakey.pem就是CA的key文件啦,./demoCA/cacert.pem就是CA的c
rt文件了

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

# 生成服务器的 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 10


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值