启用 apache 的 mod_ssl 之后需要有证书才能正常运作。写了个脚本来操作。首先要确定机器上已经有 openssl 。
复制代码 代码如下:
#!/bin/sh
#
# ssl 证书输出的根目录。
sslOutputRoot="/etc/apache_ssl"
if [ $# -eq 1 ]; then
sslOutputRoot=$1
fi
if [ ! -d ${sslOutputRoot} ]; then
mkdir -p ${sslOutputRoot}
fi
cd ${sslOutputRoot}
echo "开始创建CA根证书..."
#
# 创建CA根证书,稍后用来签署用于服务器的证书。如果是通过商业性CA如
# Verisign 或 Thawte 签署证书,则不需要自己来创建根证书,而是应该
# 把后面生成的服务器 csr 文件内容贴入一个web表格,支付签署费用并
# 等待签署的证书。关于商业性CA的更多信息请参见:
# Verisign - http://digitalid.verisign.com/server/apacheNotice.htm
# Thawte Consulting - http://monName= supplied
emailAddress= optional
EOT
# sign the certificate
echo "CA signing: $CSR -> $CERT:"
openssl ca -config ca.config -out $CERT -infiles $CSR
echo "CA verifying: $CERT <-> CA cert"
openssl verify -CAfile ./certs/ca.crt $CERT
# cleanup after SSLeay
rm -f ca.config
rm -f ca.db.serial.old
rm -f ca.db.index.old
# sign.sh END
echo "使用CA根证书签署服务器证书签署文件完毕。"
# 使用了 ssl 之后,每次启动 apache 都要求输入 server.key 的口令,
# 你可以通过下面的方法去掉口令输入(如果不希望去掉请注释以下几行代码):
echo "去除 apache 启动时必须手工输入密钥密码的限制:"
cp -f server.key server.key.org
openssl rsa -in server.key.org -out server.key
echo "去除完毕。"
# 修改 server.key 的权限,保证密钥安全
chmod 400 server.key
echo "Now u can configure apache ssl with following:"
echo -e "\tSSLCertificateFile ${sslOutputRoot}/server.crt"
echo -e "\tSSLCertificateKeyFile ${sslOutputRoot}/server.key"
# die gracefully
exit 0