3522vip-澳门新葡亰平台官网-www.3522vip.com

3522vip☞(www.rivieraquest.com)能够为大家带来真正的真钱享受,澳门新葡亰平台官网开创业内先河,注册,开户,登录开始体验不同的娱乐世界,全国第一家以娱乐产品为主体对象的专业平台,菲律宾全资子公司成立,天天免费68周周再送168。

3522vip > 操作系统 > 部署支持 https 的 Nginx 服务

原标题:部署支持 https 的 Nginx 服务

浏览次数:114 时间:2019-11-17

通过 Certbot 为 nginx 开启https支持。

为什么需要 https ?

大势所趋, 为了 SEO , 为了安全, 为了装逼

http升级到https需要在nginx的配置中加入证书信息,查询资料后确定生成证书两种方案

环境

  • CentOS 7.1
  • python2.x(这玩意系统里本来就有)

准备工作

 

安装Nginx

sudo yum install nginx -y

顺手启动:

sudo systemctl start nginx

顺手设置开机启动:

sudo systemctl enable nginx

嗯,就完成了。 至于配置文件,会在后面设置。

域名 vps(服务器) * 1

这里以我的几块钱买的 lzres.win 为例(可能会乱入其他域名, 实际操作时换成自己的就行~ ).
域名是在阿里云的万网注册的, 这里的 DNS解析 什么的我就不赘述了, 相信知道 https 的起码不是白纸一样的小白了.

此处 DNS 解析还有一个坑, 之前在 Google搜索 开启 https 方法的时候, 看到某篇博文说 Let's Encrypt 需要国外的 DNS 解析,为此我花了很多时间分别给几个域名换到国外的 DNS, 然后发现其实是不用切换的, 万网自带的 DNS 解析是可以开启 Let's Encrypt 的 https 的.

第一种:自签名证书,然后开启 CloudFlare 的 CDN 服务

 

//确定是否安装openssl

which openssl

//如果没有安装,通过apt-get或者yum等方式安装即可

sudo apt-get install openssl

//生成一个名为“ssl.key”的 RSA key文件:执行结果:生成ssl.pass.key 和 ssl.key

openssl genrsa -des3 -passout pass:x -out ssl.pass.key 2048

openssl rsa -passin pass:x -in ssl.pass.key -out ssl.key

//删除中间文件

rm ssl.pass.key

接着,利用已经生成的 ssl.key 文件,进一步生成 ssl.csr 文件:

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

执行此行命令会提示输入密码,按回车即可,因为前面我们在生成 ssl.key 时选择了密码留空。

最后我们利用前面生成的 ssl.key 和 ssl.csr 文件来生成 ssl.crt 文件,也就是自签名的 SSL 证书文件:

openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt

这一步之后,我们得到一个自签名的 SSL 证书文件 ssl.crt,有效期为 365 天。此时,ssl.csr 文件也已经不再被需要,可以删除掉了:

rm ssl.csr

 

参考地址:

 

配置https

此处我们使用 Let's Encrypt 提供的证书。且为了方便设置,使用 Certbot 配置工具。

VPS服务器

VPS 选择随便买一台就行, 什么腾讯云.阿里云.vultr .linode的之类的. 系统为 linux 的就行.(在 DNS 解析中解析到 vps 的 ip)

服务器的系统选择

亲测 CentOS6.5(32bit) 与 Let's Encrypt 存在兼容性问题(在这耗费了我半天时间, 气死), 我的解决方案是将服务器换为 Debian 8.0 成功搞定.

第二种:借助于Let's Encrypt

 

Let's Encrypt 简介

如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let's Encrypt 就是一个 CA。我们可以从 Let's Encrypt 获得网站域名的免费的证书。

Certbot 简介

Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。

 

1. 下载 certbot

最好是根据官方网址来处理:

 

图片 1图片 2

2. 生成免费证书

官方文档有比较详细的说明,根据自己的情况来选择

 

注意:官方限制了每周的申请次数,如果你进行开发测试,生成证书的时候加上 --staging参数,这样就不必太担心数量的限制了

 

下面介绍几种方法

无论哪一种方法,实质都是验证你是不是拥有这个域名,只不过实现的途径不同

 

1>webroot方法,此方法会在你配置的服务器站点目录下创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 来验证你的域名是否绑定的这个服务器

 

如果你自己没有创建相应的站点也可以自己加入一个比较通用的配置

location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /usr/share/nginx/html; } location = /.well-known/acme-challenge/ { return 404; }

 

certbot certonly --webroot -w 网站根目录 -d example.com -w 网站根目录 -d www.example.com

 

2>standalone方法,如果你不想使用你自己的服务器,这个方法是个选择,但是需要注意要关闭相应的端口或者是80或者443(以你自己选择的方式决定)

使用80端口: certbot certonly --standalone --preferred-challenges http -d example.com

使用443端口: certbot certonly --standalone --preferred-challenges tls-sni -d example.com

 

3>manual方法,如果你想在任意的linux主机下生成证书,那么这种方法可能是一个选择,但是要注意的是验证过程中会生成一个字符串,需要你将这个随机的字符串添加到你dns服务器才可以完成验证操作.

certbot certonly --manual --preferred-challenges dns -d archerwong.cn

 

3.删除证书,如果你生成的时候添加了 --stagin参数,下面的命令也要添加

certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

certbot delete --cert-name example.com

 

4.证书更新

sudo certbot renew --dry-run

 

5.丰富的参数选择

以上的各种命令其实都是可以加入很多参数,最好是查找下官方文档

 

当然官方提供了很多种生成证书的方法,你可以根据你自己的实际情况进行选择

 

证书生成完毕后,我们可以在 /etc/letsencrypt/live/ 目录下看到对应域名的文件夹,里面存放了指向证书的一些快捷方式。

 

生成证书后,配置 Nginx

 

打开 nginx server 配置文件加入如下设置:

server {

  listen 443 ssl on;

  ssl_certificate /etc/letsencrypt/live/网站域名/fullchain.pem;

  ssl_certificate_key /etc/letsencrypt/live/网站域名/privkey.pem;

  ## 其他配置

}

 

强制跳转 https

https 默认是监听 443 端口的,没开启 https 访问的话一般默认是 80 端口。如果你确定网站 80 端口上的站点都支持 https 的话加入下面的配件可以自动重定向到 https

server {

  listen 80;

  server_name your.domain.com;

  return 301 ;

}

 

参考地址:

 

 

 

 

 

 

 

 

 

工具获得

证书机构: Let's Encrypt - https://letsencrypt.org
配置工具: Certbot - https://certbot.eff.org/

事实上,你根本用不到上面两个链接,我把它们写在这只是为了方便了解其他细节,顺便表示尊重。

实际上我们可以直接通过包管理器获取 Certbot 工具。

首先需要安装 EPEL 源:

sudo yum install epel-release -y

然后安装 Certbot :

sudo yum install python2-certbot-nginx -y

工具安装完成。

开始安装 LNMP1.4

在 lmnp.org 查看详细教程, 注意一定要安装 lnmp1.4 版本(及以上), 目前(2017.3.31) 1.4 版本仍为测试版

使用 Certbot

Certbot 使用命令行中的交互式配置,我们启动它,然后跟着指示一步一步完成就行。

新建站点

经过漫长的等待安装完成后就可以新建站点了

输入命令

# lnmp vhost add
然后会提示输入域名
输入 lzres.win (因为我已经创建过了,图上用 lzres1.win 代替)
然后一路回车(如有需要自行选择),
关键的一步来了

图片 3

开启ssl

一、 启动 Certbot

通过命令:

sudo certbot --nginx

配置 ssl

看到 Add SSL Certificate (y/n)
这里时, 输入 y

图片 4

Let's Encrypt.png

输入 2 选择第二项, 自动创建
接着输入邮件地址,可以随便填

图片 5

email.png

然后就继续漫长的等待了
到这儿就接近成功了, 耐心等待吧

图片 6

successing.png

到这里就成功了~(图上域名有变化.)

图片 7

succeed.png

我们现在到网站目录丢进去个 index.html 文件测试一下

图片 8

当然现在的 http://bg9gxm.win 也是可以访问的就需要 301 重定向了

二、 填写邮箱

在下述提示后,填写你的邮箱地址。

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): xxxx@xxxx.com

输入你的邮箱地址,回车确定。

设置 301 重定向

https 站点配置完成后, http 开头的域名还是可以访问的, 这就需要将 http 跳转到 https 中.

编辑站点配置文件(如果对 vim 不熟悉可以将 vim 更换为nano)
# vim /usr/local/nginx/conf/vhost/lzres.win.conf
或者用 nano
# nano /usr/local/nginx/conf/vhost/lzres.win.conf
配置文件如下:

server
    {   
        listen 80;
        #listen [::]:80;
        server_name lzres.win ;
        index index.html index.htm index.php default.html           default.htm default.php;
        root  /home/wwwroot/lzres.win;
        # 在这儿把下面三行代码添加到文件中, 其他不用管
        if ($server_port = 80 ) {
        return 301 https://$host$request_uri;
        }

添加完成后, 重启 nginx 服务器
# /etc/init.d/nginx restart

不出意外, 现在输入 http://lzres.win 会自动跳转到 https://lzres.win

为主站开启 https 后, 我想要访问的域名是 https://lzres.win 但是也需要使 www.lzres.win 跳转到不带www的域名中, 就需要设置 301 重定向

输入命令新建一个站点

# lnmp vhost add
创建一个 www.lzres.win 的站点, 过程中数据库和 上面的已经开启过的 ssl 就不需要再开启了.

站点创建成功后对站点配置文件进行编辑:
用 vim 打开配置文件
vim /usr/local/nginx/conf/vhost/www.lzres.win.conf
删除其他代码, 只留下下面几行就可以了

server{
       listen 80;
        #listen [::]:80;
        server_name www.lzres.win;
        return 301 https://lzres.win;
}

配置完成后, 再次重启 nginx
# /etc/init.d/nginx restart
就大功告成啦
现在在浏览器中不论输入 lzres.win 还是 www.lzres.win 都会跳转到有小绿锁的 https://lzres.win

在网站目录丢进去个 index.html 文件, 访问试试吧~

图片 9

然后就可以开开心心的撸网站啦

三、 同意用户协议

下述提示提醒你阅读并同意用户协议之类的。

Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf.
You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

输入字母 A 回车确定。

其他问题

四、 请求分享你的邮箱

意思是他们会没事给你发发广告邮件。同意就是了 ╮(╯▽╰)╭

Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

输入字母 Y 回车确定。

服务器中开启了 https 后, 其他服务(比如 shadowsocks) 还能正常使用吗?

亲测可以

五、 指定域名

由于我们在安装nginx后没有配置站点,所以此处要求我们提供域名,配置工具会帮我们填写nginx的配置文件。

No names were found in your configuration files. Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c' to cancel): www.xxxx.com xxx.xxxx.com

输入你自己的域名(多个域名中间用空格隔开)回车确定。

六、 重定向

会询问你是不是要把所有http请求重定向到https。当然要了~

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. 
You can undo this change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

输入数字 2 回车确定。

七、 完成

此时配置已经完成。你可以在接下来的输出中找到如下段落:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.xxxx.com and https://xxx.xxxx.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.xxxx.com
https://www.ssllabs.com/ssltest/analyze.html?d=xxx.xxxx.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

意思就是你已经成功配置了 www.xxxx.com xxx.xxxx.com 两个域名(就是在 步骤五 输入的那两个,当然,你输入了多少个这里就会显示多少个)。
并且你可以在 这个网站上测试域名的状态。

八、 证书过期

由于 Let's Encrypt 的免费证书有效期是90天,所以你需要每80几天重新申请一次。

Certbot 可以通过简单的命令完成这个工作:

certbot renew

如果你还是觉得麻烦,可以把这个操作设为定时任务,每80几天运行一次,就可以高枕无忧了。

其他

支持https的nginx已经完全配置完成。接下来把你的站点放在nginx的目录下就行,一般是 /usr/share/nginx/html 如果不是这里,你可以在nginx的配置文件里找到,配置文件位于 /etc/nginx/nginx.conf

在浏览器中打开站点,就能看到地址栏上的小绿锁了~


原文发布于

本文由3522vip发布于操作系统,转载请注明出处:部署支持 https 的 Nginx 服务

关键词: 3522vip

上一篇:ASP错误大全(二)

下一篇:没有了