Linux Apache 的 HTTPS 配置(2)

2019-08-30 14:16

17.再次测试Firefox连接服务器端,这次就可以连接成功,Firefox取回并显示index.html页面。 在通过HTTPS验证的连接中,Firefox会在状态栏显示此图标:

双击此图标会弹出“页面信息”对话框,选择它的“安全”一栏就可以查看HTTPS连接的细节和相关的证书信息:

点击“安全”中的“查看证书”可以查看当前服务器证书zy-13.cer的信息:

注意上面显示的证书的组织名:zy-home,这是证书中的:O(Organization Name) 字段设置的,在Firefox中这个名字也被认为是验证者的名字。如果想查看服务器证书zy-13.cer的更多内容,可以换到证书查看器的“细节”选项卡,这里显示证书结构(即证书链),和证书字段,如下:

HTTPS客户端认证配置

Apache中对客户端(浏览器)的HTTPS认证配置,是建立在已完成的服务器端认证配置基础之上,也在HTTPS服务配置文件:sites-available/default-ssl 中设置。客户端的认证配置、使用过程如下:

1. 设置SSLVerifyClient和SSLVerifyDepth,如下: 2. # Client Authentication (Type):

3. # Client certificate verification type and depth. Types are 4. # none, optional, require and optional_no_ca. Depth is a

5. # number which specifies how deeply to verify the certificate 6. # issuer chain before deciding the certificate is not valid. 7. SSLVerifyClient require 8. SSLVerifyDepth 10

设置完后,使用Firefox测试一下,Firefox会报:ssl_error_handshake_failure_alert 错误,如下:

再看看Apache的错误日志error.log,其中记录到:

[Sun Oct 11 00:13:34 2009] [warn] Init: Oops, you want to request client authentication, but no CAs are known for verification!? [Hint: SSLCACertificate*]

说明Apache中需要设置CA证书信息,此证书的作用就是:在服务器端,对客户端证书进行验签。上述的:SSLCACertificate*,指代两个选项:SSLCACertificatePath、SSLCACertificateFile,这两个选项都可以用来设置CA证书。

9. 使用SSLCACertificatePath、SSLCACertificateFile 选项设置CA证书。 将用于签名客户端证书zy-1.cer的CA证书zy-root.cer,拷贝到Apache2所装系统的某个目录下,比如拷贝到:/root/common/key/zy-root.cer,然后用SSLCACertificateFile设置该CA证书路径,如下:

# Certificate Authority (CA):

# Set the CA certificate verification path where to find CA # certificates for client authentication or alternatively one # huge file containing all of them (file must be PEM encoded) # Note: Inside SSLCACertificatePath you need hash symlinks # to point to the certificate files. Use the provided # Makefile to update the hash symlinks after changes. # SSLCACertificatePath /etc/ssl/certs/

SSLCACertificateFile /root/common/key/zy-root.cer

当使用SSLCACertificatePath 选项,指定一个存储多个CA证书的目录时,要求这个目录中的CA证书必需是一个指向实际证书文件的符号链接,并且符号链接的名字应该是通过openssl工具对证书文件进行散列后的散列码,据说在mod_ssl中提供了一个Makefile来做这件事情,不过我始终没找到在Apache2安装包中还有什么SSL的Makefile,倒是在ssl-cert包中找到了一个叫:make-ssl-cert 的bash脚本,其中有几句: cd /etc/ssl/certs/

ln -sf ssl-cert-snakeoil.pem $(openssl x509 -hash -noout -in ssl-cert-snakeoil.pem)

我感觉这就是用openssl产生证书散列码,并建立符号链接的过程,于是我仿照这个命令建立了自己的CA证书zy-root.cer的符号链接,但是测试后发现不行:Firefox一直处在连接中状态,似乎是Apache无法找到合适的CA证书来验证客户端证书的有效性(/etc/ssl/certs 下的证书符号链接很多),所以我干脆就用SSLCACertificateFile来设置CA证书了,注意:用SSLCACertificateFile设置的CA证书必需是BASE64编码的PEM格式的证书。

关于SSLCACertificatePath,有兴趣的人可以参考:Apache2 mod_ssl文档 中“SSLCACertificatePath 指令”一节,虽然它说地的内容很少,(-_-^)。

CA证书设置完成后,再用Firefox测试,仍然是错误:

ssl_error_handshake_failure_alert。不要紧张,这是因为在浏览器中没有候选的客户端证书导致的,可以在Firefox的:选项→高级→加密→查看证书→您的证书,中导入PKCS#12格式的证书文件,因为PKCS#12证书中含有私钥部分,所以在导入时会提示输入保护密码。

另外,在 Firefox 的:选项→高级→加密,中有两种Firefox提供客户端证书给服务器的策略方式,可以在“当某个服务器请求我的个人证书:”选项下进行设置,分别是:“自动选择一个”和“每次均询问”,默认为:每次均询问。

10.看似一切均设置妥当,再用Firefox测试。如果设置“每次均询问”的方式提供客户端证书,则此时会弹出“使用确认请求”对话框,让用户选择一个已导入的客户端证书,证书以证书序号标识,并显示了证书的一些属性信息,如下图:

确认客户端证书后,Firefox继续连接建立过程,但却报出错误:ssl_error_bad_cert_alert,如下:

而Apache的错误日志error.log 中记录:

[Fri Jan 01 00:05:28 2010] [error] Certificate Verification: Error (9): certificate is not yet valid

我在网上查了半天也没找到问题的原因,又改了其它几个Apache配置选项还是不行,仍然出同样的错误。提示说错误证书,究竟是什么造成的呢? 最后我直接搜Apache日志中的错误描述:certificate is not yet valid,在OpenSSL官方网站的:openssl工具的verify命令文档 中找到了点线索,摘录如下:

9 X509_V_ERR_CERT_NOT_YET_VALID: certificate is not yet valid

the certificate is not yet valid: the notBefore date is after the current time.

证书中的Not Before时间和系统时间?难道是造成“错误证书”的原因是这个,我用:date '+%Y-%m-%d %T' 查了下Apache的系统时间,果然不对劲:我的Linux的系统时间,竟然比CA证书和客户端证书的Not Before时间还早,于是我终于想起来了:我用的VMware中Guest OS的Debian Linux系统,是我以前做的,拷贝到新的宿主机上后就没改过Linux的系统时间,(-_-^)。知道这一点后,赶紧用:date -s yyyy-mm-dd,把Linux系统时间改成正确的时间,至少要在证书的Not Before与Not After两个时间之间。证书的有效时间信息可以用此命令显示:openssl x509 -noout -text -in file.cer。

设置完系统时间后,重启Apache服务,再用Firefox测试,确认客户端证书后,Firefox终于完成与服务器的HTTPS连接,显示网页内容。至此,Apache的HTTPS客户端认证配置完成。


Linux Apache 的 HTTPS 配置(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-2022年康乐县体育特色小镇市场前景调查及投资咨询报告(目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: