Apache + SSL搭建Linux证书服务器

HTTPS是一个安全的访问方式,数据在传输过程中是加密的,HTTPS基于SSL加密。


一:安装apache模块和ssl模块。

yum install httpd httpd-devel mod_ssl

安装完成mod_ssl后会创建一个默认ssl证书,存放路径为/etc/pki/tls

SSL的配置文件存放在HTTP配置目录下的conf.d/ssl.conf


二:使用openssl手动创建证书

yum install openssl openssl-devel

cd /etc/pki/tls

1.生成私钥:

openssl genrsa -out server.key 2048

2.用私钥生成证书请求文件

openssl req -new -key server.key -out server.csr

此时需要你输入一些信息:(某些认证机构可能默认不支持中文,所以建议写相对应的英文)

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 []:[email protected]

随后会让输入一个密码,从这里开始可以都不输入,回车跳过


3.如果是需要提交给认证机构,就把server.key和server.csr提交即可,注意一定要保留server.key


4.手动生成crt文件

openssl x509 -days 365 -req -in server.csr -signkey server.key -out server.crt


三、配置ssl.conf文件

cp ssl.conf ssl.conf.bak

#修改配置文件前,先备份,养成好的习惯。


1. 找到:

SSLCertificateFile/etc/pki/tls/certs/localhost.crt

修改路径到你的crt文件位置

例如:

SSLCertificateFile /etc/pki/tls/mycerts/server.crt

2. 找到

SSLCertificateKeyFile/etc/pki/tls/private/localhost.key

修改路径到你的key文件位置

例如:

SSLCertificateKeyFile /etc/pki/tls/mycerts/server.key

3. 找到#

SSLCertificateChainFile conf/ssl.crt/ca.crt

去掉#,修改文件到你的中级CA证书存放位置,如果有认证机构会给你的。


四、启动apache检验结果是否生效


server httpd start #启动httpd
httpd -M | grep ssl

#检测mod_ssl是否加载成功


如果httpd无法启动,检测错误日志文件:

httpd日志文件在    #缺省位置

/var/log/httpd/error_log


ssl日志文件在httpd日志文件中的ssl_error_log


如果ssl日志文件报错如下:

[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不匹配导致,使用下列命令检测两个文件是否匹配,输出结果相同则为匹配:

openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5


如果输出结果匹配,检测是否为httpd故障,可见httpd日志,另外如果认证钥文件路径错误,httpd启动时会报错。





好了,以上是所有内容了.

如果你文章中有不正确的地方,或者你有更好的idea。

欢迎来和我分享。E-mail:[email protected]



你可能感兴趣的:(ssl,https)