HTTPS是一个安全的访问方式,数据在传输过程中是加密的,HTTPS基于SSL加密。
一:安装apache模块和ssl模块。 1
| yum install httpd httpd-devel mod_ssl
|
安装完成mod_ssl后会创建一个默认ssl证书,存放路径为/etc/pki/tls SSL的配置文件存放在HTTP配置目录下的conf.d/ssl.conf
二:使用openssl手动创建证书 1
| yum install openssl openssl-devel
|
1.生成私钥: 1
| openssl genrsa -out server.key 2048
|
2.用私钥生成证书请求文件 1
| openssl req -new -key server.key -out server.csr
|
此时需要你输入一些信息:(某些认证机构可能默认不支持中文,所以建议写相对应的英文) 1
2
3
4
5
6
7
| Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shanghai
Locality Name (eg, city) [Default City]:shanghai
Organization Name (eg, company) [Default Company Ltd]:ccc
Organizational Unit Name (eg, section) []:bbb
Common Name (eg, your name or your server's hostname) []:www.test.com
Email Address []:a@a.com
|
随后会让输入一个密码,从这里开始可以都不输入,回车跳过
3.如果是需要提交给认证机构,就把server.key和server.csr提交即可,注意一定要保留server.key
4.手动生成crt文件 1
| openssl x509 -days 365 -req -in server.csr -signkey server.key -out server.crt
|
三、配置ssl.conf文件 1
| cp ssl.conf ssl.conf.bak
|
#修改配置文件前,先备份,养成好的习惯。
1. 找到: 1
| SSLCertificateFile/etc/pki/tls/certs/localhost.crt
|
修改路径到你的crt文件位置
例如: 1
| SSLCertificateFile /etc/pki/tls/mycerts/server.crt
|
2. 找到 1
| SSLCertificateKeyFile/etc/pki/tls/private/localhost.key
|
修改路径到你的key文件位置
例如: 1
| SSLCertificateKeyFile /etc/pki/tls/mycerts/server.key
|
3. 找到# 1
| SSLCertificateChainFile conf/ssl.crt/ca.crt
|
去掉#,修改文件到你的中级CA证书存放位置,如果有认证机构会给你的。
四、启动apache检验结果是否生效
1
| server httpd start #启动httpd
|
#检测mod_ssl是否加载成功
如果httpd无法启动,检测错误日志文件: httpd日志文件在 #缺省位置 1
| /var/log/httpd/error_log
|
ssl日志文件在httpd日志文件中的ssl_error_log
如果ssl日志文件报错如下: 1
2
3
4
| [Thu Aug 01 11:35:18 2013] [warn] RSA server certificate wildcard CommonName (CN) `*.-----.nl' does NOT match server name!?
[Thu Aug 01 11:35:18 2013] [debug] ssl_engine_init.c(846): Configuring RSA server private key
[Thu Aug 01 11:35:18 2013] [error] Unable to configure RSA server private key
[Thu Aug 01 11:35:18 2013] [error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
|
此问题可能是因为server.key和server.crt不匹配导致,使用下列命令检测两个文件是否匹配,输出结果相同则为匹配: 1
2
| openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5
|
如果输出结果匹配,检测是否为httpd故障,可见httpd日志,另外如果认证钥文件路径错误,httpd启动时会报错
|