操作流程

  • 第一步,生成csr文件和key文件

$ cd /etc/ssl/private
$ openssl req -new -newkey rsa:2048 -sha256 -nodes -out maketea_loc.csr -keyout maketea_loc.key -subj "/C=CN/ST=Beijing/L=Beijing/O=maketea Inc./OU=Web Security/CN=*.maketea.loc"
  • 第二步,提交csr文件到CA机构

  • 第三步,拿到crt文件

  • 第四步,maketea_loc.csr maketea_loc.key maketea_loc.crt 三个文件放到/etc/ssl/private目录下

  • 第五步,修改nginx文件

server {  listen 80;#也可以不监听80端口 看需要listen 443 ssl;server_name www.maketea.loc;ssl on;ssl_certificate /etc/ssl/private/maketea_loc.crt;ssl_certificate_key /etc/ssl/private/maketea_loc.key;
}

一般的SHA-1形式https就配置好了

为了更安全 ,可以考虑使用迪菲-赫尔曼密钥交换

$ cd /etc/ssl/certs
$ openssl dhparam -out dhparam.pem 2048

然后在nginx ssl配置的后面加上下面的配置

ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
keepalive_timeout 70;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

同时,如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问

add_header Strict-Transport-Security max-age=63072000;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

同时也可以单独开一个 Nginx 配置,把 HTTP 的访问请求都用 301 跳转到 HTTPS

server {  listen 80;server_name  www.maketea.loc;return 301 https://www.maketea.loc$request_uri;
}

颁发证书的机构

目前一般市面上针对中小站长和企业的 SSL 证书颁发机构有:

StartSSL

Comodo / 子品牌 Positive SSL

GlobalSign / 子品牌 AlphaSSL

GeoTrust / 子品牌 RapidSSL

其中 Postivie SSL、AlphaSSL、RapidSSL 等都是子品牌,一般都是三级四级证书,所以你会需要增加 CA 证书链到你的 CRT 文件里。

以 Comodo Positive SSL 为例,需要串联 CA 证书,假设你的域名是 example.com

那么,串联的命令是

$ cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > example_com.signed.crt

在 Nginx 配置里使用 example_com.signed.crt 即可

级联问题

有些时候,由第三方机构签发的证书在浏览器上是OK的,但是到了例如安卓端会不认这个证书,Nginx官方是这样说的

Some browsers may complain about a certificate signed by a well-known certificate authority, while other browsers may accept the certificate without issues. This occurs because the issuing authority has signed the server certificate using an intermediate certificate that is not present in the certificate base of well-known trusted certificate authorities which is distributed with a particular browser. In this case the authority provides a bundle of chained certificates which should be concatenated to the signed server certificate. The server certificate must appear before the chained certificates in the combined file

就是说需要有个中间证书

一般类似godaddy这种机构会提供这个证书给你,你要做的就是把这个串放在crt文件的后面,做成一个新的crt,就可以正常使用了

$ cat nginx.crt bundle.crt > nginx.chain.crt

测试的时候自签证书的方法

$ openssl ca -in nginx.csr -out nginx.crt

参考文献

https://s.how/nginx-ssl/
http://www.cnblogs.com/chjbbs...

Nginx 配置 SSL 证书 + 搭建 HTTPS 网站相关推荐

  1. windows配置NGINX、NGINX配置SSL证书通过HTTPS访问、使用HTTPS通过NGINX代理访问服务器端项目

    1.windows配置nginx 1)在nginx官网下载稳定版nginx,nginx官网:http://nginx.org/en/download.html 2)解压文件,注:存放目录最好不要带有中 ...

  2. nginx配置ssl证书实现https访问

    配置ssl证书之前,先准备SSL证书,至于获取的途径很多(阿里云的服务,第三方服务购买).这里不详细解释.以下是我的SSL证书 准备好证书后,找到nginx的安装目录,我的安装位置为:/usr/loc ...

  3. Linux下 nginx配置ssl证书实现https访问

    配置ssl证书之前,先准备SSL证书,至于获取的途径很多(阿里云的服务,第三方服务购买).这里不详细解释.以下是我的SSL证书 准备好证书后,找到nginx的安装目录,我的安装位置为:/usr/loc ...

  4. 个人站点配置免费HTTPS证书、nginx配置ssl证书、阿里云盾和站长之家两种

    原文链接:https://www.aiprose.com/blog/20 相信大家都想让自己的站点支持https,今天就给大家介绍如何在个人站点中使用https,并使用nginx配置ssl证书.我们可 ...

  5. Nginx配置SSL证书(CentOS环境),实现https请求

    目录 一.Nginx配置SSL 1.证书申请 二.配置SSL 2.1 证书上传 2.2 HTTPS server配置 2.2.3 配置转发 三.配置问题 四.配置示例 1.nginx.conf配置SS ...

  6. java nginx https_docker nginx 配置ssl,实现https

    docker nginx 配置ssl,实现https 2019-09-05 16:06:35.0 nginx配置https总览 在nginx配置ssl实现https,简单来说分为三个步骤: 1 上传s ...

  7. IIS配置SSL证书实现https

    .net项目,http升级为https,分为两种情况:1.有域名 2.无域名,网站通过ip访问 有域名 大多数网站是这种情况,通过域名访问系统,有域名就可以去腾讯云或者其他云平台申请经过CA认证的SS ...

  8. Nginx 配置 SSL 证书 + HTTPS 站点小记

    今天给几个站点配置了认证的 ssl 证书,但是苦于自己技术不过关,或是知识不足,导致还有那么一小点 Bug 的出现,这里就我配置 HTTPS 站点的经验来总结一下吧. 一.什么是 SSL 证书,什么是 ...

  9. Nginx配置SSL证书——采用腾讯云SSL证书配置Nginx使用https访问

    一.引言 又是新的一周,小编在工作之余抽空写写博客.最近一直在写关于Nginx教学的博客,今天我们来讲讲这个Nginx怎么配置SSL证书,也就是通过https进行访问. 为什么我们要配置这个SSL证书 ...

最新文章

  1. element解决表格错位问题
  2. mysql 中序号要怎么写_如何在mysql的字段ID中插入自动编号?
  3. python方法解析顺序_浅谈Python的方法解析顺序(MRO)
  4. 5G iPhone若推迟至10月发布 将会拉低苹果两个财季营收
  5. mysql分布式插入_添砖加瓦:MySQL分布式部署
  6. 经典公开课、好的学习网站
  7. 关于《淘宝技术这十年》
  8. 使用PS2019制作明信片
  9. Bugku Misc (1—28)
  10. python游戏计分代码_Python笔试题之设计“跳一跳”小游戏计分器
  11. 1恢复 群晖raid_关于RAID1阵列数据丢失的恢复
  12. Redundant Paths(边双连通分量缩点+思维构造)
  13. Kali局域网断网攻击
  14. 年包150万的腾讯程序员,深圳房产一千万,同学聚会只能排名第16!
  15. learn.log - 进程管理器fastcgi原理及fastcgi_param详解
  16. 【软考笔记】1. 计算机原理与体系结构
  17. 股豆网:欧洲5G套餐轮番公布 流量无限用
  18. Pygame实战:利用Python实现智能五子棋,实现之后发现我玩不赢它。
  19. WTF是Docker吗?
  20. 2022/03/21hackthebox取证emo

热门文章

  1. 牛客Wannafly挑战赛10 A.小H和迷宫
  2. 3.c语言结构体成员内存对齐详解
  3. java并发:线程同步机制之计数器Exechanger
  4. Quartz.NET 入门
  5. [原创]UUID的介绍和使用
  6. DELPHI的编译指令
  7. 如何实现TextBox与DropDownList的级联
  8. 1.6 logistic回归的keras实现
  9. 相机标定(六)—— 张正友标定法
  10. package ‘catkin‘ depends on non-existent package ‘python3-catkin-pkg‘