目的:在阿里云ESC的apache服务器上部署申请的证书实现HTTPS访问

步骤:

1,申请证书(为阿里云自动配发的证书)

2,在apache上部署

2.1,vim /usr/local/apache/conf/httpd.conf

  查看模块项是否有并将其前面的#去掉

LoadModule ssl_module modules/mod_ssl.so

改为

LoadModule ssl_module modules/mod_ssl.so

将# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf

改为

Secure (SSL/TLS) connections

Include conf/extra/httpd-ssl.conf

2.2,vim /usr/local/apache/conf/extra/httpd-ssl.conf

增加如下项:

SSLHonorCipherOrder on

#default:443>

General setup for the virtual host

DocumentRoot "/data/www/default"
ServerName wxjy.aaa.com
#ServerName localhost:443
#ServerAdmin [email protected]

ErrorLog "/usr/local/apache/logs/error_ssl_log"
TransferLog "/usr/local/apache/logs/access_ssl_log"

SSL Engine Switch:

Enable/Disable SSL for this virtual host.

SSLEngine on
#添加SSL 协议支持协议,去掉不安全的协议

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

修改加密套件如下

#SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4
#SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GC$

证书公钥配置

SSLCertificateFile /usr/local/apache/cert/public.pem

证书私钥配置

SSLCertificateKeyFile /usr/local/apache/cert/213997737720084.key

证书链配置,如果该属性开头有 '#'字符,请删除掉

SSLCertificateChainFile /usr/local/apache/cert/chain.pem

2.3, /usr/local/apache/bin/httpd -k restart

3,由于我这版本是apache2.4.10+openssl0.9.8,重启时报错提示协议TLSv1.1 TSLv1.2为非法协议

解决办法

3.1,升级openssl0.9.8到openssl1.0.1g

步骤:

wKiom1ilmNSxmtjfAAAffRgUzVk273.png-wh_50

spacer.gif3.2,之后配置

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

依然报警协议为非法

项目域名只支持了TLSv1但是是始终不支持TLSv1.1和TLSv1.2,对苹果测试不通过

报警
apache配置ssl证书

苹果测试

apache配置ssl证书_第1张图片

3.3,在这纠结很久,后问了下项目维护的运维兄弟,他找了个办法解决了问题,再次十分感谢

如下:

对apache2的模块如果动态编译通常可以使用 /path/apxs -c *.c来完成
但对 mod_ssl编译是会有一些问题
如:
出现
Unrecognized SSL Toolkit!
是由于 HAVE_OPENSSL这个没有define
需要增加 -DHAVE_OPENSSL
undefined symbol: ssl_cmd_SSLMutex

undefined symbol: X509_free
通产是由于静态连接了 openssl的库照成的(默认)。
需要使用 -lcrypto -lssl -ldl
命令如下:

使用 whereis openssl 命令获取lib和include的路径

然后在apache 源码的modules/ssl文件夹下使用命令

/PATH/apxs -I/PATH/openssl/include -L/PATH/openssl/lib -c *.c -lcrypto -lssl -ldl

如下

/usr/local/apache/bin/apxs -i -a -D HAVE_OPENSSL=1 -I/usr/include/openssl/ -L/usr/local/ssl/lib/ -c *.c -lcrypto -lssl -ldl

openssl 编译的时候需要增加 shared参数

在次重启

/usr/local/apache/bin/httpd -k restart

没有报错
apache配置ssl证书_第2张图片

作者:1198553937 漫步者