木子设计

LZG个人博客

本人专注于web领域开发,博客主要记录学习php/html/css/javascript,框架Yaf/Laravel/TP/CI,Linux及一些常用工具过程中遇到的问题及解决心得,希望对技术推广及他人学习提供薄力。

Https 配置过程

发布时间:2016-08-28 15:50:09

1.   安装openssl
 yum install mod_ssl openssl

2.    生成自签名的证书(名字自己起)
 #Generate private key
openssl genrsa -out ca.key 2048
#Generate CSR Certificate Signing Request
openssl req -new -key ca.key -out ca.csr
#Generate Self Signed Certificate
openssl x509 -req -days 36500 -in ca.csr -signkey ca.key -out ca.crt

生成ca.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]:Teddysun // 组织或公司名
Organizational Unit Name (eg, section) []:  // 不填
Common Name (eg, your name or your server's hostname) []:*.teddysun.com // 此处演示是通配符域名,
一般带 www 前缀即可
Email Address []:admin@teddysun.com  // 邮箱地址
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  // 不填
An optional company name []:  // 不填

3.    证书放到规范的目录中
 #Copy the files to the correct locations
cp ca.crt /etc/pki/tls/certs
cp ca.key /etc/pki/tls/private/ca.key
cp ca.csr /etc/pki/tls/private/ca.csr


4.   配置虚拟主机文件,在文件中专门写一个监听443端口的虚拟主机,例如:
 <VirtualHost woosau:443>
        DocumentRoot /home/ownfire/www/woosau
        ServerName woosau
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/ca.crt
        SSLCertificateKeyFile /etc/pki/tls/private/ca.key
</VirtualHost>

还要写一个虚拟主机名规则,在/etc/httpd/conf.d/ssl.conf中添加一行

NameVirtualHost *:443


五、如果是第三方签署的CA证书,按如下配置:

http://www.hi-linux.com/2016/03/15/CentOS%E4%B8%8B%E9%85%8D%E7%BD%AEApache%20HTTPS/
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLCertificateChainFile /etc/ssl/certs/server-ca.crt

各指令含义:

SSLEngine :这个指令用于开启或关闭SSL/TLS协议引擎。

SSLCertificateFile:该指令用于指定服务器持有的X.509证书(PEM编码),其中还可以包含对应的RSA或DSA私钥。如果其中包含的私钥已经使用密语加密,那么在Apache启动的时候将会提示输入密语。

SSLCertificateKeyFile:指定了服务器私钥文件(PEM编码)的位置。如果SSLCertificateFile指定的服务器证书文件中不包含相应的私钥,那么就必须使用该指令,否则就不需要使用。

SSLCertificateChainFile:这个指令指定了一个多合一的CA证书,用于明确的创建服务器的证书链。这个证书链将被与服务器证书一起发送给客户端,由直接签发服务器证书的CA证书开始,按证书链顺序回溯,一直到根CA的证书结束,这一系列的CA证书(PEM格式)就构成了服务器的证书链。这有利于避免在执行客户端认证时多个CA证书之间出现混淆或冲突。