环境准备:
主机 | IP信息 |
CA_SERVWER | 192.168.3.1/24 |
HTTP_SERVER | 192.168.3.2/24 |
配置CA证书服务器
#创建文件夹,默认这些文件夹都是不存在的
mkdir -p /etc/pki/CA/{certs,newcerts,crl,private}
#进入到CA中创建索引文件
cd /etc/pki/CA/
touch index.txt
#指定一个颁发证书的序列号
echo "01">serial
创建私钥
openssl genrsa -out private/cakey.pem 2048
为CA服务器创建根证书
openssl req -new -x509 -nodes -key private/cakey.pem -days 7300 -out cacert.pem
#openssl req -new: 这是生成一个新的证书请求的命令。
#-x509: 这是指定证书类型为X.509的选项。
#-nodes: 这是生成不加密的私钥的选项。
#-key private/cakey.pem: 这是指定私钥文件的位置和名称。
#-days 7300: 这是设置证书的有效期,这里设置为7300天(大约19.5年)。
#-out cacert.pem: 这是指定输出证书文件的位置和名称。
#执行这条命令后,会提示你输入一些信息来生成证书,例如国家(或地区)名、省/州/郡名、城市/地方名、组织名、常用名、邮箱等。这些信息将被用于在证书中标识证书持有者的身份。
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:qclr
Organizational Unit Name (eg, section) []:system
Common Name (eg, your name or your server's hostname) []:skills
Email Address []:CA@163.com
为客户端申请证书
#key表示生成的秘钥文件,csr表示证书请求文件
#在客户端执行如下命令
openssl req -new -nodes -keyout httpd.server.key -out httpd.csr
将生成的csr请求文件发送给CA服务器
scp httpd.csr 192.168.3.1:/etc/pki/CA
在CA服务器上为客户端颁发证书
#在/etc/pki/CA/目录下执行
openssl ca -in httpd.csr -days 3650 -out httpd.server.crt
将证书传给客户端
scp httpd.server.crt 192.168.3.2:/root/http_ssl
配置httpd服务使用证书连接
安装httpd
yum install httpd -y
#mod_ssl用于支持SSL/TLS协议,实现安全的数据传输
yum -y install mod_ssl
修改ssl.conf配置文件
vim /etc/httpd/conf.d/ssl.conf
#修改为证书文件所在位置即可
打开浏览器访问网页
https://192.168.3.2
由于为本地自签证书,会触发浏览器的安全告警这里我们点击继续访问即可
强制使用https访问网站
使用http访问服务器时,强制跳转到https访问
#修改httpd.conf配置文件,添加以下内容
vim /etc/httpd/conf/httpd.conf
#启用重定向,当访问的端口不是443(https默认端口)时,则将访问重定向到HTTPS
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
此时再次使用http访问服务,则会强制重定向到https来进行访问