文档章节

Nginx端口转发与Let's Encrypt增加SSL认证

啊丢丢
 啊丢丢
发布于 2017/06/04 23:28
字数 1185
阅读 38
收藏 0
点赞 0
评论 0

前面做个人服务器需要用到Nginx转发tomcat的网页服务,然后顺带给服务器加上了SSL。

服务器是——nginx反向代理+tomcat作为web服务器——这样的体系架构。

第一步使用Let's Encrypt 生成相关秘钥文件和证书

本人服务器系统为Ubuntu 16.04,其他的相似发行版有的会有少许出入

首先安装certbot软件

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot

后面的内容将基于nginx进行,如果没有安装nginx,请查看我的其他博客内容

sudo vim /etc/nginx/sites-available/default

添加如下内容

 location ~ /.well-known {
                allow all;
        }

检查配置语法错误并重启nginx服务:

sudo nginx -t
sudo systemctl restart nginx

下面将生成秘钥证书:如果这是第一次运行certbot,系统将提示输入电子邮件地址并同意服务条款。进程是否成功以及证书的存储位置:


sudo certbot certonly --webroot --webroot-path=/var/www/html -d example.com -d www.example.com
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your cert
   will expire on 2017-07-26. To obtain a new or tweaked version of
   this certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - If you lose your account credentials, you can recover through
   e-mails sent to sammy@example.com.
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

进程是否成功以及证书的存储位置如上所示,需要记录证书的路径和到期日期。

防火墙注意:如果你收到这样的错误Failed to connect to host for DVSNI challenge,你的服务器的防火墙,可能需要配置为允许TCP端口的流量80443

证书文件

获得证书后,您将拥有以下PEM编码文件:

  • cert.pem:域名证书
  • chain.pem:加密连锁证书
  • fullchain.pem: cert.pemchain.pem合并
  • privkey.pem:证书的私钥

您必须知道刚刚创建的证书文件的位置,以便您可以在Web服务器配置中使用它们。文件本身被放在一个子目录中/etc/letsencrypt/archive。但是,Certbot会创建与目录中最新证书文件的符号链接。因为链接将始终指向最新的证书文件,所以这是您应该用来引用证书文件的路径。/etc/letsencrypt/live/your_domain_name

您可以通过运行此命令来检查文件是否存在(用你的域名替换掉your_domain_name):

sudo ls -l /etc/letsencrypt/live/your_domain_name

输出应该是前面提到的四个证书文件。稍后,您将配置您的Web服务器fullchain.pem作为证书文件以及privkey.pem证书密钥文件。

以下为官方建议,没有试过:

为了进一步提高安全性,您还应该生成一个强大的Diffie-Hellman组。要生成2048位组,请使用以下命令:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

 这可能需要几分钟的时间,但完成后您将拥有一个强大的DH组/etc/ssl/certs/dhparam.pem

我的nginx配置文件如下:

​##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
 listen 80;
 server_name servername;
 return 301 https://$server_name$request_uri;
 }
server {
 listen 443 ssl default_server;
# listen [::]:80 default_server;

 # SSL configuration
 #
 # listen 443 ssl default_server;
 # listen [::]:443 ssl default_server;
 #
 # Note: You should disable gzip for SSL traffic.
 # See: https://bugs.debian.org/773332
 #
 # Read up on ssl_ciphers to ensure a secure configuration.
 # See: https://bugs.debian.org/765782
 #
 # Self signed certs generated by the ssl-cert package
 # Don't use them in a production server!
 #
 # include snippets/snakeoil.conf;
 ssl on;
 ssl_certificate /etc/letsencrypt/live/your_domain_name/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/your_domain_name/privkey.pem;

 root /opt/tomcat/webapps/servername;

 # Add index.php to the list if you are using PHP
 

 server_name servername;

 location / {
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass http://127.0.0.1:8080/servername/;
 }


 location ~ /.well-known {
 allow all;
 }

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 #
 #location ~ \.php$ {
 # include snippets/fastcgi-php.conf;
 #
 # # With php7.0-cgi alone:
 # fastcgi_pass 127.0.0.1:9000;
 # # With php7.0-fpm:
 # fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 #}

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 #
 #location ~ /\.ht {
 # deny all;
 #}
}


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}

​

然后再次执行nginx配置文件的测试命令(反正我是遇到问题反复了好几次,建议每次修改后都可以检查一下):

sudo nginx -t

执行测试并通guo。至此,外部对本服务器可以发起https请求了,nginx会将该请求转发至后台tomcat的8080端口。

 

© 著作权归作者所有

共有 人打赏支持
啊丢丢

啊丢丢

粉丝 1
博文 3
码字总数 3531
作品 0
成都
LetsEncrypt SSL 证书签发(Nginx)

概述 官方文档参考: let's encrypt getting started 域名认证过程有自动认证与手动认证,自动认证会启动一个监听 80 端口的程序来完成自动认证。手动认证使用参数 来进行使用网站访问手动认证...

游鱼彩虹 ⋅ 2016/12/20 ⋅ 0

Let's Encrypt 使用教程,免费的SSL证书,让你的网站拥抱 HTTPS

这篇文章主要讲的就是如何让自己的网站免费从HTTP升级为HTTPS,使用的是 Let's Encrypt的证书。实际上也就是一个Let's Encrypt 免费证书获取教程 。 为什么要上HTTPS,说一个小故事。 从前有...

yzy121403725 ⋅ 2017/11/14 ⋅ 0

开启全站HTTPS时代-Nginx SSL+tomcat集群

目录: 1、凭证申请 Let’s Encrypt 2、Nginx支持多域名ssl证书 3、Nginx强制使用https访问(http跳转到https) 4、配置 Tomcat SSL For Free 免费 SSL 凭证申请 Let’s Encrypt 什么是Let’s...

Javen205 ⋅ 2017/11/18 ⋅ 0

在Ubuntu 16.04 LTS安装Mattermost(二)

在Ubuntu 16.04 LTS安装Mattermost(一) 在Ubuntu 16.04 LTS安装Mattermost(二) 配置Mattermost 创建系统管理员用户,设置Mattermost的一般用途 .打开浏览器,导航到Mattermost实例.比如:Matter...

二郎神六号 ⋅ 2017/07/29 ⋅ 0

https之配置nginx支持ssl

原理简介: HTTP即超文本传输协议,信息明文传输,占用tcp的80端口;HTTPS是ssl+http加密传输,占用TCP的443端口。SSL即Secure Socket Layer,安全套接字层,位于HTTP协议层和TCP协议层之间。...

hiwill ⋅ 2016/04/16 ⋅ 0

用Certbot自动生成免费的Let's Encrypt Https证书

一、怎样遇到Let's Encrypt 青橘子(qjuzi.com)需要搭建一个健壮的后端,希望采用安全的HTTPS协议,多方寻找,申请过免费证书,就在要准备购买阿里代理的证书时,发现了Let's Encrypt。 二、什...

花有信 ⋅ 2017/11/03 ⋅ 0

个人博客http转https

  搭建个人博客的时候,就看过一些免费证书申请的文章,也浏览过一些使用Https的博客。使用Https要比Http安全很多,至少在国内很普通的流量劫持攻击会减少很多。闲来无事,测试把自己的个人...

lorysun ⋅ 2017/07/04 ⋅ 0

在你的网站服务器配置https

在你的网站服务器配置https 简介 通过Let's Encrypt免费提供的证书服务,实现http使用ssl进行加密传输(https://zh.wikipedia.org/wiki/%E5%82%B3%E8%BC%B8%E5%B1%A4%E5%AE%89%E5%85%A8%E5%...

CzlunSu ⋅ 2017/07/10 ⋅ 0

Nginx 教程 #3:SSL 设置

大家好!分享即关怀,我们很乐意与你分享其他的一些知识。我们准备了一个 Nginx 指南,分为三个系列。如果你已经知道一些 Nginx 知识或者想扩展你的经验和认知,这个再合适不过了。 我们将告...

Mr_zebra ⋅ 02/08 ⋅ 0

CentOS7配置Nginx支持HTTPS访问

1.安装git和bc 2.安装Nginx 1.准备: 2.下载: 3.解压: 4.编译安装: 3.申请SSL证书 1.下载Let’s Encrypt 2.运行Let’s Encrypt 生成文件: cert.pem: 域名证书 chain.pem: The Let’s Enc...

浅梦大帝 ⋅ 2016/11/19 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何优雅的编程——C语言界面的一点小建议

我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以...

柳猫 ⋅ 21分钟前 ⋅ 0

从零手写 IOC容器

概述 IOC (Inversion of Control) 控制反转。熟悉Spring的应该都知道。那么具体是怎么实现的呢?下面我们通过一个例子说明。 1. Component注解定义 package cn.com.qunar.annotation;impo...

轨迹_ ⋅ 21分钟前 ⋅ 0

系统健康检查利器-Spring Boot-Actuator

前言 实例由于出现故障、部署或自动缩放的情况,会进行持续启动、重新启动或停止操作。它可能导致它们暂时或永久不可用。为避免问题,您的负载均衡器应该从路由中跳过不健康的实例,因为它们...

harries ⋅ 23分钟前 ⋅ 0

手把手教你搭建vue-cli脚手架-详细步骤图文解析[vue入门]

写在前面: 使用 vue-cli 可以快速创建 vue 项目,vue-cli很好用,但是在最初搭建环境安装vue-cli及相关内容的时候,对一些人来说是很头疼的一件事情,本人在搭建vue-cli的项目环境的时候也是...

韦姣敏 ⋅ 33分钟前 ⋅ 0

12c rman中输入sql命令

12c之前版本,要在rman中执行sql语句,必须使用sql "alter system switch logfile"; 而在12c版本中,可以支持大量的sql语句了: 比如: C:\Users\zhengquan>rman target / 恢复管理器: Release 1...

tututu_jiang ⋅ 47分钟前 ⋅ 0

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut ⋅ 今天 ⋅ 0

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用...

@林文龙 ⋅ 今天 ⋅ 0

如何显示 word 左侧目录大纲

打开word说明文档,如下图,我们发现左侧根本就没有目录,给我们带来很大的阅读障碍 2 在word文档的头部菜单栏中,切换到”视图“选项卡 3 然后勾选“导航窗格”选项 4 我们会惊奇的发现左侧...

二营长意大利炮 ⋅ 今天 ⋅ 0

智能合约编程语言Solidity之线上开发工具

工具地址:https://ethereum.github.io/browser-solidity/ 实例实验: 1.创建hello.sol文件 2.调试输出结果

硅谷课堂 ⋅ 今天 ⋅ 0

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1......

Contac ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部