https服务+CA证书

在Linux系统中,HTTPS与CA(Certificate Authority,证书颁发机构)密切相关,主要涉及到以下几个方面:

  1. HTTPS简介

    • HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,通过使用SSL/TLS协议进行加密通信,确保数据在传输过程中的保密性和完整性。HTTPS协议使用SSL/TLS证书来验证服务器的身份和加密通信内容。
  2. SSL/TLS证书

    • SSL/TLS证书由证书颁发机构(CA)颁发,用于验证服务器的身份。每个证书包含服务器的公钥,并包含了证书颁发机构的数字签名,以确保证书的真实性和有效性。证书通常包含服务器的主机名(域名),以及其他关键信息。
  3. 证书颁发机构(CA)

    • 证书颁发机构是受信任的第三方机构,负责验证服务器的身份并颁发SSL/TLS证书。常见的公共CA包括Symantec(现为DigiCert)、GlobalSign、Let's Encrypt等。Linux系统中通常会预安装一些公共CA的根证书,以便系统和应用程序可以验证这些颁发机构签发的证书。
  4. 在Linux中配置HTTPS服务

    • 如果你在Linux服务器上配置HTTPS服务,通常需要进行以下步骤:
      • 获取SSL/TLS证书:可以自签名证书或购买公共CA颁发的证书。
      • 配置Web服务器(如Apache或Nginx):编辑相应的配置文件,指定SSL证书的路径和其他参数。
      • 启用SSL模块:确保服务器已启用SSL/TLS支持的模块。
      • 配置虚拟主机:确保每个HTTPS站点都有正确的SSL配置。
  5. 证书管理工具

    • 在Linux系统中,常用的证书管理工具包括openssl命令行工具。openssl可以用于生成自签名证书、请求证书签名、查看和验证证书、配置SSL参数等。

通过了解这些基础概念和步骤,你可以在Linux环境下有效地配置和管理HTTPS服务,确保安全地传输数据和保护用户隐私。

openssl是一个强大的开源命令行工具,用于执行各种与SSL/TLS和加密相关的操作。在Linux系统中,它通常预装并广泛用于生成证书、管理密钥、进行加密解密操作以及测试SSL/TLS连接。以下是一些常见的openssl命令和用途:

1、生成自签名证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

// 这个命令生成一个自签名的SSL/TLS证书,包括私钥(server.key)和公钥证书(server.crt)。

 2、生成证书签名请求(CSR)

openssl req -out server.csr -new -newkey rsa:2048 -nodes -keyout server.key

// 生成一个证书签名请求(CSR),用于向证书颁发机构(CA)请求签发证书。

 3、查看证书信息

openssl x509 -in server.crt -text -noout

// 查看证书文件(server.crt)的详细信息,包括颁发者、有效期、公钥等。

 4、生成RSA密钥对

openssl genpkey -algorithm RSA -out private.key -aes256

// 生成一个RSA密钥对,私钥保存在private.key文件中,并使用AES256进行加密。

 5、加密和解密文件

openssl enc -aes-256-cbc -salt -in file.txt -out file.enc
openssl enc -d -aes-256-cbc -in file.enc -out file.txt

// 使用AES-256-CBC算法加密和解密文件。

 6、测试SSL/TLS连接

openssl s_client -connect example.com:443

// 连接到指定的HTTPS服务器(example.com),显示服务器证书和SSL/TLS握手信息。

 7、验证证书链

openssl verify -CAfile ca-certificates.crt server.crt

// 验证服务器证书(server.crt)是否由指定的根证书(ca-certificates.crt)链中的任何一个签名。

8、生成DH参数

openssl dhparam -out dhparam.pem 2048

// 生成Diffie-Hellman(DH)参数,用于在SSL/TLS握手中进行密钥交换。

 openssl命令有很多功能和选项,可以执行更复杂的操作,如创建PKCS#12文件、生成各种加密散列、签名和验证数据等。在使用openssl时,要确保理解命令的含义和参数选项,以免造成意外的安全风险或错误操作。

1、实验准备:两台linux虚拟机,一台用作web主机,另一台用作ca签发服务器

注:未部署DNS服务器,就把两台主机的/etc/hosts记录修改一下

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.30  web
192.168.100.40  ca

保存退出后测试两台主机是否能够ping通

[root@web ~]# ping ca
PING ca (192.168.100.40) 56(84) bytes of data.
64 bytes from ca (192.168.100.40): icmp_seq=1 ttl=64 time=0.160 ms
64 bytes from ca (192.168.100.40): icmp_seq=2 ttl=64 time=0.172 ms

[root@ca ~]# ping web
PING web (192.168.100.30) 56(84) bytes of data.
64 bytes from web (192.168.100.30): icmp_seq=1 ttl=64 time=0.136 ms
64 bytes from web (192.168.100.30): icmp_seq=2 ttl=64 time=0.266 ms

2、正式开始前两台主机均需做一下时钟同步!!!

[root@web ~]# yum -y install chrony
[root@ca ~]# systemctl restart chronyd
[root@ca ~]# systemctl enable chronyd
[root@ca ~]# hwclock -w
[root@ca ~]# timedatectl 
               Local time: Mon 2024-08-05 11:38:47 CST
           Universal time: Mon 2024-08-05 03:38:47 UTC
                 RTC time: Mon 2024-08-05 03:38:46
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes     // 此处如为no则需重复上述操作,直到此处为yes
              NTP service: active
          RTC in local TZ: no

3、检查ca端是否已安装openssl

[root@ca ~]# rpm -q openssl
openssl-3.0.7-27.el9.x86_64

// 如未安装,输入yum -y install openssl安装一遍

4、编辑查看openssl加密协议配置文件

[root@ca ~]# cd /etc/pki/
[root@ca pki]# ls
ca-trust  java  rpm-gpg  rsyslog  tls
[root@ca pki]# cd tls/
[root@ca tls]# ls
cert.pem  certs  ct_log_list.cnf  fips_local.cnf  misc  openssl.cnf  openssl.d  private
[root@ca tls]# vim openssl.cnf  // 配置文件
[ CA_default ]

dir             = /etc/pki/CA              // CA服务工作目录

certs           = $dir/certs               // 存放证书目录 

crl_dir         = $dir/crl                 // 存放证书吊销列表(CRL)的目录

database        = $dir/index.txt           // CA服务的数据库文件                         
                                        
new_certs_dir   = $dir/newcerts            // 存放新颁发证书的目录     

certificate     = $dir/cacert.pem          // CA的根证书文件路径
     
serial          = $dir/serial              // 存放证书序列号的文件路径
        
crlnumber       = $dir/crlnumber           // 存放CRL序列号的文件路径,
                                        
crl             = $dir/crl.pem             // 生成的CRL文件路径
   
private_key     = $dir/private/cakey.pem   // CA的私钥文件路径

x509_extensions = usr_cert                 // 指定颁发用户证书的X.509扩展

name_opt        = ca_default               // 默认的名称选项
       
cert_opt        = ca_default               // 默认的证书选项

5、查看配置文件所指向目录的路径,如无此目录或文件则需自行创建

[root@ca pki]# mkdir CA
[root@ca pki]# ls
CA ca-trust java rpm-gpg rsyslog tls
[root@ca pki]# cd CA/
[root@ca CA]# mkdir certs
[root@ca CA]# mkdir crl
[root@ca CA]# touch index.txt
[root@ca CA]# mkdir newcerts
[root@ca CA]# touch serial
[root@ca CA]# mkdir private
[root@ca CA]# ls
certs crl index.txt newcerts private serial

6、在主机CA上为主机CA生成私钥

[root@ca CA]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem)
[root@ca CA]# cd /etc/pki/CA/private/
[root@ca private]# ls
cakey.pem

7、在主机CA上为主机CA生成自签名证书

[root@ca private]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365

openssl: openssl工具的命令行接口。

req:     表示执行证书请求操作。

-new:    表示生成一个新的证书请求或证书。

-x509:   表示生成自签名的 X.509 证书。

-key:    指定用于生成证书的私钥文件的路径

-out:    指定生成的证书文件的输出路径和文件名

-days:   指定证书的有效期,这里是 365 天。
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] : TXKJ
Organizational Unit Name (eg, section) [] : INFORMATION
Common Name (eg, your name or your server's hostname) []:ca. example. com
Email Address []: root@example.com

-----------------------------------------------------------------------------------------

Country Name (2 letter code) [XX]: 国家或地区代码,一般使用 ISO 3166-1 规定的两个字母代码表示

State or Province Name (full name) []: 州或省的全名。

Locality Name (eg, city) [Default City]: 城市或地区的名称。

Organization Name (eg, company) [Default Company Ltd]: 组织或公司的名称。

Organizational Unit Name (eg, section) []: 组织单元名称,比如部门。

Common Name (eg, your name or your server's hostname) []: 通用名称,一般用于标识证书的实体,可以是个人名字或者服务器的主机名。

Email Address []: 电子邮件地址。

8、导入初始序列号

[ root@ca CA]# echo 01 > serial
[ root@ca CA]# cat serial
01

9、在主机WEB上为主机WEB生成私钥,并将私钥存放在/etc/httpd/ssl目录中

[root@web httpd]# mkdir ssl
[root@web httpd]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key)
[root@web httpd]# cd ssl/
[root@web ssl]# ls
httpd.key

 10、在主机WEB上为web.example.com站点生成签署请求文件

openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
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]:TXKJ
Organizational Unit Name (eg, section) [ ] : INFORMATION
Common Name (eg, your name or your server's hostname) []:web. example. com
Email Address [] : root@example. com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

 11、在主机web上将签署请求文件通过可靠方式发送给CA服务器

scp httpd.csr root@ca.example.com:/etc/pki/CA/

12、在主机CA上对签署请求进行数字签名,并指明所生成的Web证书的存放路径

 

13、在主机WEB上将CA主机上已经数字签名后的Web证书下载下来

scp root@ca.example.com:/etc/pki/CA/certs/httpd.crt /etc/httpd/ssl/

14、在主机WEB上安装apche http扩展模块mod_ssl

yum -y install mod_ssl

15、修改主配置文件vim  /etc/httpd/conf.d/ssl.conf

SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

16、部署https站点

vim /etc/httpd/conf.d/httpd-vhosts.conf

<VirtualHost 192.168.100.30:443>
    DocumentRoot "/var/www/html"
    ServerName web.example.com
    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/httpd.crt
    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
</VirtualHost>

17、重启httpd服务

[root@web ~]# systemctl restart httpd
[root@web ~]# systemctl enable httpd
[root@web ~]# cd /var/www/html/
[root@web html]# ls
[root@web html ]# echo 123 > index.html
[root@web html ]# cat index.html
123
[root@web html]#

18、到图形化页面验证,时钟同步

 

19、将DNS指向web服务器IP地址,并尝试能否Ping通CA服务器

 20、在客户端上去下载CA服务器上的根证书

21、在浏览器中找到设置选项,将证书导入

 验证

访问成功

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值