您的位置:首页 > 运维架构 > Apache

Linux用Openssl为Apache签发证书

2012-07-06 22:32 344 查看
公司需要搭建Tomcat + Apache + Openssl的https站点,集团内的所有的机器都有客户端证书,该证书是由集团的CA证书签发的。

需要做的工作是让集团的员工通过客户端证书认证的方式访问这个即将搭建的站点。

环境: Centos 5.7 x64 + apache + tomcat + openssl

Centos默认安装的openssl路径是/etc/pki/tsl/下,openssl的默认配置路径是/etc/pki/tls/openssl.cnf

#修改默认配置为以下状态
dir             = ./demoCA              # Where everything is kept
certs           = $dir/certs            # Where the issued certs are kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.


复制创建证书的脚本到Apache的配置目录下

cp /etc/pki/tls/misc/CA /usr/local/apache/conf/


给自己签发一个本地CA证书

#创建本地根证书private key
openssl genrsa -des3 -out private/cakey.key 2048
chmod og-rwx private/cakey.key
#创建根证书请求文件,这里需要填写一些信息
openssl req -new -key private/cakey.key -out cacert.req
#根据前面创建的请求文件生成根证书
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey private/cakey.key -in cacert.req -out cacert.pem
rm -f cacert.req


通过刚才的本地根证书创建一个服务器证书,过程基本上与创建CA证书相同

#创建证书key
openssl genrsa -out serverca.key 2048
chmod og-rwx serverca.key
#服务器证书请求文件
openssl req -new -key serverca.key -out serverca.req
#创建服务器证书
openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA cacert.pem -CAkey private/cakey.pem -CAserial serial -in serverca.req -out serverca.crt


这样就创建好了服务器证书, 接下来需要将服务器证书serverca.crt发给集团的证书中心签发,签发后会收到一个服务器证书serverca.crt与一个CA认证证书intranet-ca.cer,intranet-ca.cer(客户端证书加密公钥)的作用就是与客户端证书握手通信的凭证, 有了它我们才能通过客户端证书访问apache服务器。

接下来会配置apache的ssl,修改httpd.conf的以下配置如下

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>


修改httpd-ssl.conf的以下配置如下

SSLEngine on
#集团签发的服务器证书
SSLCertificateFile "/usr/local/apache/conf/serverca.crt"
#服务器证书加密文件
SSLCertificateKeyFile "/usr/local/apache/conf/serverca.key"
#本地签发的根证书
SSLCertificateChainFile "/usr/local/apache/conf/cacert.pem"
#集团签发的认证证书
SSLCACertificateFile "/usr/local/apache/conf/intranet-ca.cer"
#要求客户端通过证书访问
SSLVerifyClient require
SSLVerifyDepth  10


到此,Apache的SSL认证就搭建好了,员工可以通过证书对应的域名访问刚才所搭建的apache服务器,后面会介绍如何通过apache反向代理访问tomcat。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: