nginx配置自签名https

nginx配置https是需要CA颁发证书的,为了测试方便,我们可以使用自签名证书

1.如何生成自签名证书 1.1:我们需要为服务端和客户端准备私钥和公钥:

//生成服务器端私钥
openssl genrsa -out server.key 1024
//生成服务器端公钥
openssl rsa -in server.key -pubout -out server.pem

1.2:生成CA证书

// 生成 CA 私钥
openssl genrsa -out ca.key 1024

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

注意:执行上面命令会出现以下需要填写的项目,可以直接回车跳过,但是Common Name那一项建议填写你的域名,如果是本地的话,可以写localhost

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:这个是你的域名
Email Address []:

生成CA证书

openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt

1.3:生成服务器证书

//服务器端需要向 CA 机构申请签名证书,在申请签名证书之前依然是创建自己的 CSR 文件
openssl req -new -key server.key -out server.csr
//向自己的 CA 机构申请证书,签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的证书
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt

1.4:生成cer文件

//使用openssl 进行转换
openssl x509 -in server.crt -out server.cer -outform der

2.配置nginx 我们拿到CA签发的这个证书后,需要将证书配置在nginx中。 首先,我们将server.crt和server.key拷贝到nginx的配置文件所在的目录 其次,在nginx的配置中添加如下配置:

server {
        listen       443 ssl;
        server_name  你的域名;
        charset utf-8;

        ssl on;
        ssl_certificate      server.crt;
        ssl_certificate_key  server.key;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

当前我们只是做一个欢迎页的https测试,所以location用的是默认的。需要扩展的小伙伴可以自行修改配置。 最后,重启nginx,访问https://你的域名,便可出现欢迎页。

注意:很多时候,访问一个网站的时候不会刻意去加https开头,而是直接输入域名访问,但是这样浏览器默认是http请求,如何让用户直接输入域名访问的也是https请求呢? 方法1:将所有http请求重定向到https

server {
        charset utf-8;
        listen 80;
        server_name 你的域名;
        rewrite ^(.*) https://$host$1 permanent;
    }

方法2:当网站只允许https访问的时候,通过http访问会报497状态码,利用error_page的方式重定向到https

server {
        listen       443 ssl;
        listen       80;
        server_name  localhost;
        charset utf-8;

        ssl on;
        ssl_certificate      server.crt;
        ssl_certificate_key  server.key;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page 497  https://$host$uri?$args;
    }

方法3:利用浏览器的方式 首先,建一个html文本,命名为https.html

<html>
<meta http-equiv="refresh" content="0;url=https://你的域名/">
</html>

其次,再通过配置监听80端口的server对该html访问:

server {
        charset utf-8;
        listen 80;
        server_name 你的域名;
        location / {
            root html;
            index https.html;
        }
        error_page 404 https://你的域名/;
    }

以上方式亲测有效,小伙伴可以根据实际情况使用。

原文地址:https://www.cnblogs.com/surplus/p/11423201.html

时间: 2024-10-31 13:52:54

nginx配置自签名https的相关文章

Windows下Nginx配置SSL实现Https访问(包含证书生成)

Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https? HTTP全名超文本传输协议,客户端据此获取服务器上的超文本内容.超文本内容则以HTML为主,客户端拿到HTML内容后可根据规范进行解析呈现.因此,HTTP主要负责的是"内容的请求和获取".问题就出在这部分.行监控.劫持.阻挡等行为很容易导致网站泄密,一些关键参数比如登录密码开发者会在客户端

Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)

准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796.html) 2.证书颁发机构(CA)颁发的有效证书,其中我们需要两个文件,一个是 .key文件(私钥),另一个是 .crt或.pem文件(公钥) 核心功能 ? 通过指定由受信任的证书颁发机构(CA)颁发的有效证书,将服务器配置为侦听端口上的HTTPS流量. ? 通过配置nginx.conf文件来加强

Centos7.5 下Nginx配置SSL支持https访问。

核心配置: ? 通过指定由受信任的证书颁发机构(CA)颁发的有效证书,将服务器配置为侦听端口上的HTTPS流量.? 通过配置nginx.conf文件来加强安全性.示例包括选择更强大的密码,并将所有流量通过HTTP重定向到HTTPS.? 添加HTTP Strict-Transport-Security(HSTS)头部确保客户端所做的所有后续请求仅通过HTTPS. ####################################################################

怎么使用Nginx配置ssl实现https访问的方法

大家都知道现在如果你访问一个网站,如果是http开头的访问,状态栏地址会显示不安全 但如果是https访问,会显示安全  原因: HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间,以明文方式传递信息,不提供任何方式的数据加密,因此使用HTTP协议传输隐私信息(如:银行卡号.密码等支付信息)非常不安全. 为了解决这一安全缺陷,网景公司设计了SSL(Secure Sockets Layer)协议,在HTTP的基础上加入了SSL(Secure Sockets Layer)协议,SSL依靠

nginx配置-http和https

#user nobody;worker_processes 1;error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info; #pid logs/nginx.pid;worker_rlimit_nofile 204800; events { worker_connections 204800; multi_accept on; use epoll;} http { include

Nginx配置阿里云https服务

博客原地址 #https访问 server {     listen 443;     server_name www.baidu.com;     root   /var/www/html; index  index.php index.html index.htm; ssl on;         location / {                 try_files $uri $uri/ /index.php?$query_string;          #client_max_b

nginx 配置自签名证书

#!/bin/sh # create self-signed server certificate: read -p "Enter your domain [www.example.com]: " DOMAIN echo "Create server key..." openssl genrsa -des3 -out $DOMAIN.key 1024 echo "Create server certificate signing request...&qu

nginx配置阿里云免费ssl证书实现https化

前言 本篇文章主要介绍的是在阿里云免费申请SSL证书,使用nginx配置实现网站HTTPS化. 阿里云免费申请SSL证书实现网站HTTPS化 1.登录阿里云账户,在首页搜索框中模糊搜索SSL,选择SSL证书 2.点击购买证书选项 3.点击免费型DV_SSL,购买 4.支付完成后申请证书 5.填写证书申请信息 6.下载nginx形式的证书 nginx中进行配置 1.下载并安装nginx 2.nginx安装目录下新建cert文件夹,将下载的证书,一共两个文件放入该文件夹 3.进入nginx/conf

nginx 配置https并自签名证书

2016-10-28 转载请注明出处:http://daodaoliang.com/ 作者: daodaoliang 版本: V1.0.1 邮箱: [email protected] 参考链接: 这里 和 这里 和 官方文档 1. 制作服务器证书 服务器CA私钥: openssl genrsa -des3 -out ca.key 2048 制作解密后的CA私钥(一般无此必要): openssl rsa -in ca.key -out ca_decrypted.key ca.crt CA根证书(公