使用 openssl 申请 https 自签名证书

2022/7/11 opensslhttps

# 1. Reference

简易实现 HTTPS (二) 自签名证书 | PHP 技术论坛 (learnku.com) (opens new window)

# 2. 概述

https自签名证书可以在线申请(阿里云DV型SSL证书、腾讯云等),也可以通过 openssl 本地申请。这里介绍通过 openssl 申请自签名证书。

注:本地申请的无效,无法像普通的https链接那样被信任,如果需要公网验证,还是需要通过在线申请。

# 3. 步骤

# 申请证书

cd nginx/conf
mkdir -p cert && cd cert
1
2

检查 openssl 版本

openssl version
1

使用 des3 生成 4096 比特位服务器私钥

openssl genrsa -des3 -out server.key 4096
1

生成证书签名请求文件,注意填写域名或者 IP 地址(Common Name)

openssl req -new -key server.key -out server.csr
1

生成 4096 位 ca 私钥

openssl genrsa -des3 -out ca.key 4096
1

去除服务器私钥避免以后每次载入文件需要输入密码

openssl rsa -in server.key -out server.key
1

以 x509 证书格式标准生成 10 年的 crt ,注意填写域名或者 IP 地址(Common Name)

openssl req -new -x509 -key ca.key -out ca.crt -days 3650
1

请求有效期为 3650 天 传入文件为 server.csr 指定 CA 文件为 ca.crt 指定私钥文件为 ca.key 并自动创建 CA 序列文件 输出证书文件 server.crt 至此签名成功

openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
1

完成后,cert 目录下应有6个文件

cert
├── ca.crt
├── ca.key
├── ca.srl
├── server.crt
├── server.csr
└── server.key
1
2
3
4
5
6
7

# Nginx 配置

检查是否安装 http_ssl_module 模块

nginx -V
1

nginx 配置

server {
      listen       58088  ssl;
      server_name     www.trunkey.com; # server_name 为对应IP或域名
      ssl_certificate ./cert/server.crt;
      ssl_certificate_key ./cert/server.key;
      location / { 
      index index.html index.php;
      rewrite ^/(.*)WebService/(.*)Command(.*)$ /webservice.php last;
      root  /server/abchosting/www/isms/wwwroot;
      location ~ .*\.(php|php5)?$
      {   
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
      }
     }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

重新加载

service nginx reload
1
Last Updated: 2022/7/11 上午11:30:59