https实现

实现https 搭建CA 颁发证书

实现https 搭建CA 颁发证书

 

加密模块默认没有安装,需要安装加密模块

[root@localhost ~]# httpd -M | grep ssl

Syntax OK

 

安装模块

[root@localhost ~]# yum install mod_ssl

 

安装后查看模块

[root@localhost ~]# httpd -M | grep ssl

ssl_module (shared)

 

加载支持加密的模块的配置文件

[root@localhost ~]# rpm -ql mod_ssl

/etc/httpd/conf.d/ssl.conf

 

[root@localhost ~]# grep mod_ssl /etc/httpd/conf.d/ssl.conf

# directives see <URL:http://httpd.apache.org/docs/2.2/mod/mod_ssl.html>

LoadModule ssl_module modules/mod_ssl.so 从配置文件中加载了支持加密的模块

 

重启服务

[root@localhost ~]# service httpd restart

 

SSL加密只支持一个网站,不支持多虚拟主机,删除创建的虚拟主机

[root@localhost ~]# rm -rf /etc/httpd/conf.d/vhosts.conf

 

修改主配置文件,使用安装好httpd时使用的站点目录

DocumentRoot “/var/www/html”

 

复制创建一个用于被访问的文件

[root@localhost ~]# cp /var/log/messages /var/www/html/m.html

 

添加apache的权限

[root@localhost ~]# chmod +r /var/www/html/m.html

 

重启服务

[root@localhost ~]# service httpd restart

 

访问

 

 

查看证书 [ 自签名的证书 ]

 

配置文件中定义了加载证书文件的路径

[root@localhost ~]# rpm -ql mod_ssl

/etc/httpd/conf.d/ssl.conf 配置文件

[root@localhost ~]# cat /etc/httpd/conf.d/ssl.conf

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 私钥文件路径

SSLCertificateFile /etc/pki/tls/certs/localhost.crt 证书文件路径

#SSLCertificateChainFile /etc/httpd/conf.d/ssl/cacert.pem 根证书文件路径(已经修改过)

 

查看证书文件

[root@localhost ~]# cat /etc/pki/tls/certs/localhost.crt

—–BEGIN CERTIFICATE—–

 

[root@localhost ~]# openssl x509 -in /etc/pki/tls/certs/localhost.crt -noout -text

Certificate:

Data:

Version: 3 (0x2)

Serial Number: 2088 (0x828)

Signature Algorithm: sha256WithRSAEncryption

Issuer: C=–, ST=SomeState, L=SomeCity, O=SomeOrganization, OU=SomeOrganizationalUnit, CN=localhost/emailAddress=root@localhost 发布者

Validity

Not Before: Jan 27 08:44:14 2018 GMT

Not After : Jan 27 08:44:14 2019 GMT

Subject: C=–, ST=SomeState, L=SomeCity, O=SomeOrganization, OU=SomeOrganizationalUnit, CN=localhost/emailAddress=root@localhost 颁发给谁

Subject Public Key Info:

 

 

/etc/pki/tls/certs/localhost.crt文件是在安装mod_ssl 时,通过安装脚本生成的,不属于任何包

[root@localhost ~]# rpm -ql /etc/pki/tls/certs/localhost.crt

package /etc/pki/tls/certs/localhost.crt is not installed

 

 

搭建CA

CA 192.168.119.159

 

CA服务器

[root@localhost ~]# hostname ca

[root@localhost ~]# exec bash

[root@ca ~]#

 

Web服务器

[root@localhost ~]# hostname websrv

[root@localhost ~]# exec bash

[root@websrv ~]#

 

搭建CA

[root@ca ~]# cd /etc/pki/CA/

[root@ca /etc/pki/CA]# tree

.

├── certs

├── crl

├── newcerts

└── private

 

4 directories, 0 files

[root@ca /etc/pki/CA]#

 

[root@ca /etc/pki/CA]# touch index.txt

[root@ca /etc/pki/CA]# echo 01 > serial

 

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

 

[root@ca /etc/pki/CA]# tree

.

├── certs

├── crl

├── index.txt

├── newcerts

├── private

│ └── cakey.pem

└── serial

 

4 directories, 3 files

[root@ca /etc/pki/CA]#

 

 

自签名证书

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

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]:magedu.com

Organizational Unit Name (eg, section) []:opt

Common Name (eg, your name or your server’s hostname) []:ca.magedu.com

Email Address []:

[root@ca /etc/pki/CA]#

 

[root@ca /etc/pki/CA]# tree

.

├── cacert.pem

├── certs

├── crl

├── index.txt

├── newcerts

├── private

│ └── cakey.pem

└── serial

 

4 directories, 4 files

[root@ca /etc/pki/CA]#

 

 

Web服务器申请证书

[root@websrv ~]# mkdir /etc/httpd/conf.d/ssl

[root@websrv ~]# cd /etc/httpd/conf.d/ssl

创建证书申请文件

[root@websrv /etc/httpd/conf.d/ssl]# (umask 077; openssl genrsa -out httpd.key)

Generating RSA private key, 1024 bit long modulus

…………++++++

…………………++++++

e is 65537 (0x10001)

[root@websrv /etc/httpd/conf.d/ssl]#

 

生成证书申请

[root@websrv /etc/httpd/conf.d/ssl]# openssl req -new -key httpd.key -out httpd.csr

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

—–

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:beijing

Locality Name (eg, city) [Default City]:bj

Organization Name (eg, company) [Default Company Ltd]:magedu.com

Organizational Unit Name (eg, section) []:opt

Common Name (eg, your name or your server’s hostname) []:*.magedu.com

Email Address []:

 

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

 

[root@websrv /etc/httpd/conf.d/ssl]# ll

total 8

-rw-r–r– 1 root root 647 Jan 27 17:19 httpd.csr 证书申请文件

-rw——- 1 root root 891 Jan 27 17:16 httpd.key

 

 

把证书申请传到CA进行签名

[root@websrv /etc/httpd/conf.d/ssl]# scp httpd.csr 192.168.119.159:/etc/pki/CA

 

CA服务器查看并签名证书申请

[root@ca /etc/pki/CA]# ls

cacert.pem certs crl httpd.csrindex.txt newcerts private serial

 

[root@ca /etc/pki/CA]# openssl ca -in httpd.csr -out certs/httpd.crt-days 712

Using configuration from /etc/pki/tls/openssl.cnf

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 1 (0x1)

Validity

Not Before: Jan 27 09:22:18 2018 GMT

Not After : Jan 9 09:22:18 2020 GMT

Subject:

countryName = CN

stateOrProvinceName = beijing

organizationName = magedu.com

organizationalUnitName = opt

commonName = *.magedu.com

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

69:1C:DF:9F:18:D9:2F:98:1D:EF:71:D0:6D:DB:A3:35:CE:A3:1F:41

X509v3 Authority Key Identifier:

keyid:1E:A3:A2:DF:3E:17:6A:4E:F1:37:F5:4E:AA:E4:61:A8:D4:B5:4A:31

 

Certificate is to be certified until Jan 9 09:22:18 2020 GMT (712 days)

Sign the certificate? [y/n]:y

 

 

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

[root@ca /etc/pki/CA]#

 

 

生成的证书文件

[root@ca /etc/pki/CA]# tree

.

├── cacert.pem

├── certs

│ └── httpd.crt

├── crl

├── httpd.csr

├── index.txt

├── index.txt.attr

├── index.txt.old

├── newcerts

│ └── 01.pem

├── private

│ └── cakey.pem

├── serial

└── serial.old

 

4 directories, 10 files

[root@ca /etc/pki/CA]#

 

 

httpd.crt 和 01.pem是同一个文件

 

把签过名的证书文件发送和申请的服务器

[root@ca /etc/pki/CA]# scp certs/httpd.crt 192.168.119.129:/etc/httpd/conf.d/ssl/

 

查看文件

[root@websrv /etc/httpd/conf.d/ssl]# ll

total 12

-rw-r–r– 1 root root 3721 Jan 27 17:24 httpd.crt

-rw-r–r– 1 root root 647 Jan 27 17:19 httpd.csr 请求文件

-rw——- 1 root root 891 Jan 27 17:16 httpd.key

 

修改配置文件

[root@websrv /etc/httpd/conf.d]# vim ssl.conf

ServerName www.magedu.com:443

SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt

SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key

 

重新启动服务

[root@websrv /etc/httpd/conf.d]# service httpd restart

 

 

把上级CA的证书传输给下级CA,否则会导致证书不被信任

[root@ca /etc/pki/CA]# scp cacert.pem 192.168.119.129:/etc/httpd/conf.d/ssl/

 

 

 

查看

[root@websrv /etc/httpd/conf.d/ssl]# ls

cacert.pemhttpd.crt httpd.csr httpd.key

 

修改配置文件

[root@websrv /etc/httpd/conf.d/ssl]# vim /etc/httpd/conf.d/ssl.conf

SSLCertificateChainFile /etc/httpd/conf.d/ssl/cacert.pem CA的证书文件

重启服务

[root@websrv /etc/httpd/conf.d/ssl]# service httpd restart

 

 

访问测试

 

 

根CA不受信任,需要把CA的证书导入到计算机的受信任的CA证书列表中

 

[root@websrv /etc/httpd/conf.d/ssl]# ll

total 16

-rw-r–r– 1 root root 1334 Jan 27 17:33 cacert.pem

 

cacert.pem CA服务器的证书文件,需要导入到计算机的列表中

导出的文件后缀不对无法打开,所以需要修改文件的后缀

 

 

 

 

安装证书

 

 

因为签名的证书是www.magedu.com,所以需要使用FQDN访问,修改本地的/hosts文件,访问测试

 

C:\Windows\System32\drivers\etc\hosts

192.168.119.129 www.magedu.com

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:/91330

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐注册  万达娱乐  万达娱乐注册  万达招商QQ  万达招商QQ  guoqibee.com  测试  万达直属QQ  华宇招商  万达娱乐直属QQ