openssl自生成https证书

本文涉及的产品
.cn 域名,1个 12个月
简介: 使用nginx来使用https,使用openssl来自己生成不可信证书

1.首先使用openssl执行如下命令生成一个key:

openssl genrsa -des3 -out xxxx.key 1024

然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。

由于生成时候必须输入密码。你可以输入后执行如下代码复制一个nginx2.key文件,此key文件无密码

openssl rsa -in xxxx.key -out nginx.key

然后使用openssl 根据这个key文件生成证书请求文件:

openssl req -new -key nginx.key -out nginx.csr

Country Name (2 letter code) [XX]:CN #国家名称
State or Province Name (full name) []:ShangHai #省
Locality Name (eg, city) [Default City]:ShangHai #市
Organization Name (eg, company) [Default Company Ltd]:ACBC #公司
Organizational Unit Name (eg, section) []:Tech #部门
Common Name (eg, your name or your server's hostname) []:.mydomain.com #注意,此处应当填写你要部署的域名,如果是单个则直接添加即可,如果不确定,使用,表示可以对所有mydomain.com的子域名做认证
Email Address []:admin@mydomain.com #以域名结尾即可

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #是否设置密码,可以不写直接回车
An optional company name []: #其他公司名称 可不写

3.最后根据这2个文件生成crt证书文件:

openssl x509 -req -days 3650 -in nginx.csr -signkey nginx.key -out nginx.crt

4.最后使用到的文件是key和crt文件。如果需要用pfx 可以用以下命令生成:

openssl pkcs12 -export -inkey nginx2.key -in nginx.crt -out nginx.pfx

nginx配置文件
在配置文件中定位到HTTP协议代码片段(http{}),并在HTTP协议代码里面添加以下server配置(如果server配置已存在,按照以下注释内容修改相应配置即可)。
使用示例代码前,请注意替换以下内容:
yourdomain.com:替换成证书绑定的域名。
如果您购买的是单域名证书,需要修改为单域名(例如www.aliyundoc.com);如果您购买的是通配符域名证书,则需要修改为通配符域名(例如*.aliyundoc.com)。

cert-file-name.pem:替换成您在步骤3上传的证书文件的名称。
cert-file-name.key:替换成您在步骤3上传的证书私钥文件的名称。

以下属性中,以ssl开头的属性表示与证书配置有关。

server {

listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
    root html;  #站点目录。
    index index.html index.htm;
}

}

server {
    listen 80;
    server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
    rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    location / {
        index index.html index.htm;
    }
}


所有的HTTP访问自动跳转到HTTPS页面,则可以在Web目录下打开.htaccess文件(如果没有,需新建该文件),并添加以下rewrite语句。

RewriteEngine On
RewriteCond %{HTTP:From-Https} !^on$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$ [NC]   #需要将yourdomain.com替换成证书绑定的域名。
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R=301,L]   #需要将yourdomain.com替换成证书绑定的域名。
目录
相关文章
|
19天前
|
安全 网络安全 数据安全/隐私保护
政务单位IP地址https证书
政务单位IP地址HTTPS证书是一种专为只有IP地址而无域名的政务网站设计的数字证书,用于加密通信、确保数据安全并提升用户信任度。申请流程包括选择证书颁发机构、提交申请并验证、部署证书等步骤。证书有效期通常为一年或多年,需定期更新以确保安全性。
|
1月前
|
存储 网络安全 对象存储
缺乏中间证书导致通过HTTPS协议访问OSS异常
【10月更文挑战第4天】缺乏中间证书导致通过HTTPS协议访问OSS异常
88 4
|
1月前
|
安全 算法 量子技术
【HTTPS】中间人攻击和证书的验证
【HTTPS】中间人攻击和证书的验证
51 1
|
1月前
|
存储 缓存 安全
https访问提示不安全,证书密钥验证上如何解决
【10月更文挑战第4天】访问提示不安全,证书密钥验证上如何解决
290 2
|
2月前
|
Linux Docker Windows
Docker配置https证书案例
本文介绍了如何为Docker的Harbor服务配置HTTPS证书,包括安装Docker和Harbor、修改配置文件以使用证书、生成自签名证书、配置证书以及验证配置的步骤。
175 2
Docker配置https证书案例
|
1月前
|
安全 网络安全 数据安全/隐私保护
HTTPS 请求中的证书验证详解(Python版)
HTTPS 请求中的证书验证详解(Python版)
111 0
|
3月前
|
安全 Apache Windows
WAMP——配置HTTPS证书
WAMP——配置HTTPS证书
62 1
WAMP——配置HTTPS证书
|
3月前
|
安全 网络安全 Windows
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法
|
3月前
|
Web App开发
Chrome浏览器导出HTTPS证书
Chrome浏览器导出HTTPS证书
55 0
Chrome浏览器导出HTTPS证书
|
3月前
|
网络协议 安全 网络安全
免费申请 HTTPS 证书的八大方法
免费申请 HTTPS 证书的八大方法