内容目录
apache 配置 https
一、yum 安装 openssl 和 openssl-devel,httpd-devel
二、生成证书(也可以从公司的证书颁发机构获取):
#建立服务器密钥
openssl genrsa -des3 1024 > /usr/local/apache/conf/server.key
# 从密钥中删除密码(以避免系统启动后被询问口令)
openssl rsa -in /usr/local/apache/conf/server.key > /usr/local/apache/conf/server2.key
mv /usr/local/apache/conf/server2.key /usr/local/apache/conf/server.key
#建立服务器密钥请求文件
openssl req -new -key /usr/local/apache/conf/server.key -out /usr/local/apache/conf/server.csr
5>openssl x509 -in /usr/local/apache/conf/server.csr -out
# 建立服务器证书
/usr/local/apache/conf/server.crt -req -signkey /usr/local/apache/conf/server.key -days 365
三、修改 Apache 的配置文件 httpd.conf
打开 ssl 模块,没有这个模块就需要安装依赖包:mod_ssl,安装后就会在 modules 里面找到:
LoadModule ssl_module modules/mod_ssl.so
引入 ssl 配置文件,增加支持 ssl:
Include conf/extra/httpd-ssl.conf(去掉行首的注释)
- 启动重定向(可选),使用用户 HTTP 访问自动重定向为 HTTPS,直接在 http.conf 最后配置即可,在 httpd.conf 文件尾加入如下内容:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]
四、修改加密文件 ssl.conf,通过 yum 安装好的 httpd,在 conf.d 目录下面有 ssl.conf 配置文件,我们需要在里面配置一个 VirtualHost 和配置证书和密钥:
LoadModule ssl_module modules/mod_ssl.so
Listen 443
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW:!RC4:
<VirtualHost _default_:443> # 必须有一个虚拟主机,这样才可以使用跳转功能和使用443端口访问
DocumentRoot "/home/store/webroot"
Servername https://xxx.com/
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLCertificateFile /etc/httpd/conf/cert/xxx.com.crt
SSLCertificateKeyFile /etc/httpd/conf/cert/xxx.com.key
</VirtualHost>
五、重启 Apache
service httpd restart
- 在浏览器输入 https://域名 或者 域名:443,如果两个能正常访问,表示 https 已经配置成功。
- 在浏览器输入 域名,如果能够正常跳转到 https 连接上,那说明跳转功能正常。
- 启动 apache 碰到下面问题:
Invalid command 'SSLPassPhraseDialog', perhaps misspelled or defined by a module not included in the server configuration
到 apache 的 bin 目录下面执行 ./httpd -l 看看有没有 mode_ssl.c,这个错误说明 ssl 模块安装没有成功。
解决办法:
- 1、重新编译 apache,加上–enable-ssl –with-ssl 参数
- 2、把 ssl 模块加入到已经编译好的 apache 中
首先,使用 whereis openssl 命令获取 lib 和 include 的路径
[root@robot /usr/local/apache/modules]# whereis openssl
openssl: /usr/bin/openssl /usr/lib/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz
然后 在 apache 源码的 modules/ssl 文件夹下,使用命令/usr/sbin/apxs -i -a -D HAVE_OPENSSL=1 -I/usr/include/openssl/ -L/usr/lib/openssl/ -c *.c -lcrypto -lssl -ldl
(apxs 需要安装 http-devel 才有,虽然如此,我还是没有编译成功,于是就在其他已经编译了这个模块的机器上拷贝 mod_ssl.so 到 apache 模块目录/usr/local/apache/modules)
相关文章
- ThinkPad x13 Gen1傲腾H10重装系统的麻烦(0)
- Win10系统电脑进入安全模式的四种方法,让你轻松应对各种问题(0)
- 使用Jetson_benchmark进行性能测试(0)
- 【Python】修改Windows中 pip 的缓存位置与删除 pip 缓存(1)
- 记录问题解决的连接(0)