CentOS8 OpenSSL制作自签证书HTTP升级HTTPS 配置

1.OpenSSL 制作自签名证书

1、安装 OpenSSL 。

[centos@host ~ ]$ sudo dnf install openssl

2、创建 SSL 工作目录。

证书包括 CA 认证机构、服务器和客户端三类证书的制作,在 SSL 工作根目录下分别建立"ca"、"server"、"client"子目录存放对应的输出文件,并设置所有者为证书管理账户。

[centos@host ~ ]$ sudo mkdir -p /data/ssl/ca
[centos@host ~ ]$ sudo mkdir -p /data/ssl/server
[centos@host ~ ]$ sudo mkdir -p /data/ssl/client
[centos@host ~ ]$ sudo chown -R root:root /data/ssl

指令名称chown 改变文件或目录的访问权限

# chown [-R] [用户名称:组名称] [文件或目录] 

1.1.第一阶段:制作 CA 根证书

1、制作 CA【秘钥】。

操作过程:设置 CA 秘钥口令。

[centos@host ~ ]$ openssl genrsa -des3 -out /data/ssl/ca/ca.key 2048

Generating RSA private key, 2048 bit long modulus (2 primes)
................................+++++
............+++++
e is 65537 (0x010001)
Enter pass phrase for /data/ssl/ca/ca.key:      ---(输入123)
Verifying - Enter pass phrase for /data/ssl/ca/ca.key:    ---(输入123)

查看 CA 秘钥文件(需要输入秘钥口令):

[centos@host ~ ] openssl rsa -in /data/ssl/ca/ca.key

Enter pass phrase for /data/ssl/ca/ca.key:    ---(输入123)
......

 

2、制作 CA 【根证书签名申请】。

输入 CA 秘钥文件,输出 CA 根证书签名申请文件。

操作过程:验证 CA 秘钥口令 => 设置国家名称 => 设置省份名称 => 设置城市名称 => 设置组织机构名称 => 设置组织单元名称 => 设置证书名称 => 设置电子邮件地址和扩展属性(密码提示信息和可选的公司名称)。

[centos@host ~ ]$ openssl req -new -key /data/ssl/ca/ca.key -out /data/ssl/ca/ca.csr

Enter pass phrase for /data/ssl/ca/ca.key:    ---(输入123)
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) []:sd
Locality Name (eg, city) [Default City]:qd 
Organization Name (eg, company) [Default Company Ltd]:private
Organizational Unit Name (eg, section) []:tz
Common Name (eg, your name or your server's hostname) []:ca
Email Address []:       ---(直接回车)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:          ---(直接回车)
An optional company name []:      ---(直接回车)

注意:【Common Name】应为 CA 机构的名称。

查看 CA 证书申请文件:

[centos@host ~ ]$ openssl req -in /data/ssl/ca/ca.csr -noout -text

3、生成 CA 自签名【根证书】,即对签名申请进行自签名生成证书。

输入 CA 秘钥文件、CA 根证书签名申请,输出 CA 自签名根证书文件。

操作过程:验证 CA 秘钥口令。

[centos@host ~ ]$ openssl x509 -req -days 3650 -signkey /data/ssl/ca/ca.key -in /data/ssl/ca/ca.csr -out /data/ssl/ca/ca.pem

Signature ok
subject=C = cn, ST = sd, L = qd, O = private, OU = tz, CN = ca
Getting Private key
Enter pass phrase for /data/ssl/ca/ca.key:      ---(输入123)

4、导出 CA【 PKCS12 证书】。

输入 CA 自签的 CA 证书文件、CA 秘钥,输出 CA PKCS12 证书。

操作过程:设置 PKCS12 证书口令。

[centos@host ~ ]$ openssl pkcs12 -export -in /data/ssl/ca/ca.pem -inkey /data/ssl/ca/ca.key -out /data/ssl/ca/ca.p12 -name ca

Enter Export Password:            ---(输入123)
Verifying - Enter Export Password:   ---(输入123)

5、查看 CA 产生的全部文件。

[centos@host ~ ]$ ls /data/ssl/ca/
ca.csr  ca.key  ca.p12  ca.pem

1.2.第二阶段:制作服务器证书

1、制作服务器【秘钥】。

操作过程:设置服务器秘钥口令。

[centos@host ~ ]$ openssl genrsa -des3 -out /data/ssl/server/server.key 2048

Generating RSA private key, 2048 bit long modulus (2 primes)
.......................................................+++++
...........+++++
e is 65537 (0x010001)
Enter pass phrase for /data/ssl/server/server.key:     ---(输入123)
Verifying - Enter pass phrase for /data/ssl/server/server.key:   ---(输入123)

查看服务器秘钥文件(需要输入秘钥口令):

[centos@host ~ ] openssl rsa -in /data/ssl/server/server.key

Enter pass phrase for /data/ssl/server/server.key:    ---(输入123)
......

2、制作服务器【证书签名申请】。

输入服务器秘钥文件,输出服务器证书签名申请文件。

操作过程:验证服务器秘钥口令 => 设置国家名称 => 设置省份名称 => 设置城市名称 => 设置组织机构名称 => 设置组织单元名称 => 设置证书名称 => 设置电子邮件地址和扩展属性(密码提示信息和可选的公司名称)。

[centos@host ~ ]$ openssl req -new -key /data/ssl/server/server.key -out /data/ssl/server/server.csr

Enter pass phrase for /data/ssl/server/server.key:      ---(输入123)
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) []:sd
Locality Name (eg, city) [Default City]:qd
Organization Name (eg, company) [Default Company Ltd]:private
Organizational Unit Name (eg, section) []:tz
Common Name (eg, your name or your server's hostname) []:192.168.0.209   ---(为服务器ip)
Email Address []:         ---(直接回车)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:             ---(直接回车)
An optional company name []:           ---(直接回车)

注意:【Common Name】应为服务器的 IP 地址或者 DNS(如:192.168.216.128 或者 localhost)。在 在 Web 容器配置后,当客户端使用 HTTPS 协议访问时,如果域名与【Common Name】不一致,则会进行风险提示。

3、生成 CA 签名的服务器【证书】,即 CA 对服务器签名申请进行签名生成服务器证书。

输入 CA 根证书文件、 CA 秘钥文件、服务器证书签名申请,输出 CA 签名的服务器证书文件。

操作过程:验证 CA 秘钥口令。

[centos@host ~ ]$ openssl x509 -req -days 3650 -CA /data/ssl/ca/ca.pem -CAkey /data/ssl/ca/ca.key -CAcreateserial -in /data/ssl/server/server.csr -out /data/ssl/server/server.pem

Signature ok
subject=C = cn, ST = sd, L = qd, O = private, OU = tz, CN = 192.168.0.209
Getting CA Private Key
Enter pass phrase for /data/ssl/ca/ca.key:    ---(输入123)

4、导出服务器【 PKCS12 证书】。

输入 CA 签名的服务器证书文件,输出服务器 PKCS12 证书。

操作过程:验证服务器秘钥口令 => 设置 PKCS12 证书口令。

[centos@host ~ ]$ openssl pkcs12 -export -in /data/ssl/server/server.pem -inkey /data/ssl/server/server.key -out /data/ssl/server/server.p12 -name https_cert

Enter pass phrase for /data/ssl/server/server.key:      ---(输入123)
Enter Export Password:             ---(输入123)
Verifying - Enter Export Password:          ---(输入123)

5、查看服务器产生的全部文件。

[centos@host ~ ]$ ls /data/ssl/server
server.pem  server.csr  server.key  server.p12

1.3.第三阶段:制作客户端证书(双向认证时使用)

1、制作客户端【秘钥】。

操作过程:设置客户端秘钥口令。

[centos@host ~ ]$ openssl genrsa -des3 -out /data/ssl/client/client.key 2048

Generating RSA private key, 2048 bit long modulus (2 primes)
.........+++++
..........+++++
e is 65537 (0x010001)
Enter pass phrase for /data/ssl/client/client.key:     ---(输入123)
Verifying - Enter pass phrase for /data/ssl/client/client.key:    ---(输入123)

查看客户端秘钥文件(需要输入秘钥口令):

[centos@host ~ ] openssl rsa -in /data/ssl/client/client.key

Enter pass phrase for /data/ssl/client/client.key:     ---(输入123)
......

2、制作客户端【证书签名申请】。

输入客户端秘钥文件,输出客户端证书签名申请文件。

操作过程:验证客户端秘钥口令 => 设置国家名称 => 设置省份名称 => 设置城市名称 => 设置组织机构名称 => 设置组织单元名称 => 设置证书名称 => 设置电子邮件地址和扩展属性(密码提示信息和可选的公司名称)。

[centos@host ~ ]$ openssl req -new -key /data/ssl/client/client.key -out /data/ssl/client/client.csr

nter pass phrase for /data/ssl/client/client.key:     ---(输入123)
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) []:sd
Locality Name (eg, city) [Default City]:qd
Organization Name (eg, company) [Default Company Ltd]:private
Organizational Unit Name (eg, section) []:tz
Common Name (eg, your name or your server's hostname) []:https_client
Email Address []:      ---(直接回车)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:            ---(直接回车)
An optional company name []:        ---(直接回车)

注意:【Common Name】应为客户端的统一标识。

3、生成 CA 签名的客户端【证书】,即 CA 对客户端签名申请进行签名生成客户端证书。

输入 CA 根证书文件、 CA 秘钥文件、客户端证书签名申请,输出 CA 签名的客户端证书文件。

操作过程:验证 CA 秘钥口令。

[centos@host ~ ]$ openssl x509 -req -days 3650 -CA /data/ssl/ca/ca.pem -CAkey /data/ssl/ca/ca.key -CAcreateserial -in /data/ssl/client/client.csr -out /data/ssl/client/client.pem

Signature ok
subject=C = cn, ST = sd, L = qd, O = private, OU = tz, CN = https_client
Getting CA Private Key
Enter pass phrase for /data/ssl/ca/ca.key:     ---(输入123)

4、导出客户端【 PKCS12 证书】。

输入 CA 签名的客户端证书文件,输出客户端 PKCS12 证书。

操作过程:验证客户端秘钥口令 => 设置 PKCS12 证书口令。

[centos@host ~ ]$ openssl pkcs12 -export -in /data/ssl/client/client.pem -inkey /data/ssl/client/client.key -out /data/ssl/client/client.p12 -name https_client

Enter pass phrase for /data/ssl/client/client.key:   ---(输入123)
Enter Export Password:              ---(输入123)
Verifying - Enter Export Password:             ---(输入123)

5、查看客户端产生的全部文件。

[centos@host ~ ]$ ls /data/ssl/client
client.pem  client.csr  client.key  client.p12

2.Web 容器配置 HTTPS 站点

2.1.Tomcat 配置方案

修改server.xml文件

把默认的8080端口改成80并把redirectPort从8443改为443

 

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />

 在文件中的增加以下配置并保存(服务器认证):

<Server>
    <Service>  
        <Connector
            port="443" 
            protocol="org.apache.coyote.http11.Http11NioProtocol"
            maxThreads="150"
            SSLEnabled="true"
            keystoreFile="/data/ssl/server/server.p12"
            keystoreType="PKCS12"
            keystorePass="123">
    </Connector>
    </Service>  
</Server>

 只运行 https,不允许http 则 web.xml 的 welcome-file-list 下面 中添加

<welcome-file-list>
        <welcome-file>/</welcome-file>
</welcome-file-list>

<security-constraint>
        <web-resource-collection>
            <web-resource-name>sslwebsokect</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

 启动/重新启动 Tomcat 。

2.2.Nginx 配置方案

如果使用nginx则需要做如下配置:

http {
    server {
        listen       80;
        listen       443 ssl;

        server_name  localhost;

        # 服务器签名证书文件
        ssl_certificate      /data/ssl/server/server.pem;
        # 服务器秘钥文件
        ssl_certificate_key  /data/ssl/server/server.key;

        # 开启客户端证书认证(双向认证)
        # ssl_verify_client on; 
        # CA 证书(双向认证)
        # ssl_client_certificate /data/ssl/ca/ca.pem;
        

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            ...
        }
    }
}

启动/重新启动 Nginx 服务器。

3.客户端配置

3.1.安装 CA 机构证书

以火狐浏览器为例

 

 

 

 

 完成。

注:不能通过 https://127.0.0.1/ 访问项目要用真实ip访问

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 8 上制作签证配置 HTTPS 需要以下步骤: 1. 安装 OpenSSL 在终端中输入以下命令进行安装: ``` sudo dnf install openssl ``` 2. 生成私钥 在终端中输入以下命令生成私钥: ``` openssl genrsa -out server.key 2048 ``` 这将生成一个 2048 位的 RSA 私钥,并将其保存到名为 server.key 的文件中。 3. 生成证书签名请求 (CSR) 在终端中输入以下命令生成证书签名请求: ``` openssl req -new -key server.key -out server.csr ``` 在生成 CSR 时,你需要提供一些信息,如国家/地区、州/省、城市、组织名称、组织单位、通用名称等。这些信息将被用于生成 SSL 证书。 4. 生成自签名 SSL 证书 在终端中输入以下命令生成自签名 SSL 证书: ``` openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt ``` 这将生成一个有效期为 365 天的自签名 SSL 证书,并将其保存到名为 server.crt 的文件中。 5. 配置 HTTPS 在 Apache 或 Nginx 中启用 HTTPS 需要编辑相应的配置文件并重启服务。 以 Nginx 为例,编辑 /etc/nginx/nginx.conf 文件,在 server 块中添加以下内容: ``` listen 443 ssl; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; ``` 然后重启 Nginx 服务: ``` sudo systemctl restart nginx ``` 现在你可以通过 https://yourdomain.com 访问网站,并且浏览器中将出现 SSL 证书的锁图标,表示已启用 HTTPS。 注意:在生成 SSL 证书时,一定要确保通用名称 (CN) 与你要使用 SSL 证书的域名相同,否则 SSL 连接将被浏览器拒绝。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值