8、openssl实现私有CA:
配置文件:/etc/pki/tls/openssl.cnf
39 ####################################################################
40 [ CA_default ]
41
42 dir = /etc/pki/CA # CA工作目录
43 certs = $dir/certs # 证书目录
44 crl_dir = $dir/crl # 吊销列表
45 database = $dir/index.txt # 索引文件数据库
46 #unique_subject = no #
47 #
48 new_certs_dir = $dir/newcerts # 刚签署的证书放置目录
49
50 certificate = $dir/cacert.pem # CA自签署证书放置目录
51 serial = $dir/serial # 证书序列号,下一个证书的序列号
52 crlnumber = $dir/crlnumber # 吊销证书序列号
53 #
54 crl = $dir/crl.pem # 当前正在使用吊销列表文件
55 private_key = $dir/private/cakey.pem# CA的私钥
56 RANDFILE = $dir/private/.rand # 随机数文件
1、认证中心的身份生成一对密钥
cd /etc/pki/CA
方法一:
生成私钥:openssl genrsa -out private/cakey.pem 2048
修改私钥权限为600或400:chmod 600 private/cakey.pem
方法二:
(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
提取公钥(在私钥的基础上提取公钥):openssl rsa -in private/cakey.pem -pubout #非必要步骤
2、认证中心的身份生成自签署的证书
生成证书:openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
查看生成的证书:openssl x509 -text -in cacert.pem
openssl req –new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
3、生成文件:
touch index.txt serial crlnumber
echo 01 > serial
4、客户应用程序申请证书
生成私钥:(umask 077;openssl genrsa -out httpd.key 2048) #将私钥保存至使用此证书的应用服务的配置文件目录下
申请:openssl req -new -key httpd.key -out httpd.csr
客户将申请发给认证中心:scp httpd.csr 192.168.1.101:/tmp/
认证中心签署证书:openssl ca -in httpd.csr -out httpd.crt -days 365
查看证书:openssl x509 -in certs/httpd.crt -noout -serial -subject
将证书发给客户:scp httpd.crt 192.168.1.105:/etc/httpd/ssl
5、认证中心吊销证书
openssl ca -revoke /tmp/httpd.crt
1、yum install mod_ssl
2、配置
SSLEngine on|off #SSL引擎操作开关
SSLCertificateFile “/usr/local/apache2/conf/ssl.crt/server.crt” #指定服务器证书位置
SSLCertificateKeyFile “/usr/local/apache2/conf/ssl.key/server.key” #服务器私钥文件
3、配置文件
36
37 DocumentRoot "/var/www/html"
38 ServerName www.xuejinwei.cc
39 SSLEngine on
40 SSLCertificateFile "/etc/httpd/ssl/httpd.crt"
41 SSLCertificateKeyFile "/etc/httpd/ssl/httpd.key"
42
4、跳转https
36
37 DocumentRoot "/var/www/html"
38 ServerName www.xuejinwei.cc
39 RewriteEngine on
40 RewriteCond %{SERVER_PORT} !^443$
41 RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
42
如果只针对某个目录
RewriteEngine on
RewriteBase /yourfolder
RewriteCond %{SERVER_PORT} !^443$
#RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]