1 阿里云Nginx配置https实现域名访问项目

第一步:签署第三方可信任的 SSL 证书

证书可以直接在阿里云里面申请免费的ssl证书
在这里插入图片描述
登录阿里云账号,在上方搜索栏内搜索ssl,点击ssl证书(应用安全)
在这里插入图片描述
来到这个页面后点击购买证书
在这里插入图片描述
如图选择免费版ssl证书,点击支付
在这里插入图片描述
支付完成后跳转到控制台首页,点击证书申请
在这里插入图片描述
填写完证书申请表单之后点击下一步
在这里插入图片描述
点击验证显示验证成功后再提交审核
在这里插入图片描述
审核通过后点击下载按钮
在这里插入图片描述
选择nginx旁边的下载
在这里插入图片描述
下载解压后得到一个.key和.pem文件,到这里,我们的证书申请工作已经做完了,下面可以开始配置https了
在这里插入图片描述

第二步:配置https

1、centos如何安装nginx可以参考这篇博文:https://segmentfault.com/a/1190000018109309
2、安装完毕后,找到nginx.conf所在的目录,我这里的目录为:/etc/nginx
3、在此目录里面新建一个文件夹cert,用来存放密匙文件
4、点击nginx.conf,配置ssl,**注意,我这里是1.16版本的nginx,1.15之前的配置和这个不一样!!**下面是我的配置:

  server {
     listen 443 ssl http2; #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443和ssl on。
     server_name www.example.xyz; #将www.certificatestests.com修改为您证书绑定的域名,例如:www.example.com。如果您购买的是通配符域名证书,要修改为通配符域名,例如:*.aliyun.com。
     root html;

     index index.html index.htm;
     ssl_certificate cert/cert.pem;  #将domain name.pem替换成您证书的文件名称。
     ssl_certificate_key cert/cert.key; #将domain 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 TLSv1.1 TLSv1.2; #使用该协议进行配置。
     ssl_prefer_server_ciphers on;    
  }

如果是1.15之前的nginx版本的话,应该这样配置:

   listen 443; #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443和ssl on。
     server_name www.example.xyz; #将www.certificatestests.com修改为您证书绑定的域名,例如:www.example.com。如果您购买的是通配符域名证书,要修改为通配符域名,例如:*.aliyun.com。
     root html;
     ssl on;
     index index.html index.htm;
     ssl_certificate cert/cert.pem;  #将domain name.pem替换成您证书的文件名称。
     ssl_certificate_key cert/cert.key; #将domain 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 TLSv1.1 TLSv1.2; #使用该协议进行配置。
     ssl_prefer_server_ciphers on;    
  }

5、配置反向代理,让默认端口(一般是80)代理我们项目的端口8080,也就是说我们可以通过访问80端口来达到访问8080端口的效果

  server {
     listen 443 ssl http2; #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443和ssl on。
     server_name www.example.xyz; #将www.certificatestests.com修改为您证书绑定的域名,例如:www.example.com。如果您购买的是通配符域名证书,要修改为通配符域名,例如:*.aliyun.com。
     root html;

     index index.html index.htm;
     ssl_certificate cert/cert.pem;  #将domain name.pem替换成您证书的文件名称。
     ssl_certificate_key cert/cert.key; #将domain 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 TLSv1.1 TLSv1.2; #使用该协议进行配置。
     ssl_prefer_server_ciphers on; 
    location / {
        proxy_pass http://ip:8080; //ip写你自己服务器的ip
    }   
  }

配置完后保存,然后重启nginx

 nginx -s reload
 sudo systemctl restart nginx

然后再查看防火墙是否打开,一般是关闭的,关闭的话就不需要打开了。如果是打开状态的话就开启服务器的默认端口(一般是80)和443端口

然后如果是云服务器的话还需要配置安全组,打开服务器管理控制台,点击本地实例安全组
在这里插入图片描述
点击手动添加或者快速添加,添加默认端口80和443端口进来,保存
在这里插入图片描述
下面就是配置域名解析了,来到域名控制台,点击解析
在这里插入图片描述
点击添加记录
在这里插入图片描述
然后把你的服务器的公网ip地址解析进来,点击确认
在这里插入图片描述
解析完毕后等10分钟差不多就可以去访问域名了,访问项目的swagger文档,可以看见已经变成https了(这里需要手动敲https才行)
在这里插入图片描述
可以看到成功访问项目

方法2、使用acme.sh生成https证书

一、安装

参考 acme.sh文档

$ curl  https://get.acme.sh | sh

阿里云服务器中上面的方式不能下载到,所以使用下面的方式:

$ curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1  sh

使用命令source ~/.bashrc让alias生效,或者再次执行

$ alias acme.sh=~/.acme.sh/acme.sh

二、添加DNSAPI密钥

我使用阿里云的域名,所以直接先添加阿里云的dnsapi, 登录阿里云控制台-头像-accesskeys, 或者登录后直接打开 链接,添加并获取AccessKeyID和AccessKeySecret,存在旧的也可以直接使用。

其他类型的可以参考dnsapi文档

三、生成证书

使用阿里云的dns,所以下面的dns参数是dns_ali, 例如我们申请zqyu.com这个域名的泛域名证书

$ export Ali_Key="[参数是上面申请的AccessKeyID]"
$ export Ali_Secret="[参数是上面申请的AccessKeySecret]"
$ acme.sh --issue --dns dns_ali -d zqyu.com -d *.zqyu.com

如果下载失败可以使用 --debug参数打印更多的信息,例如

$ acme.sh --issue --dns dns_ali -d zqyu.com-d *.zqyu.com --debug

等待证书下载并保存,acme.sh 用到的所有文件都放在路径 ~/.acme.sh/, 下载的证书也全部放在这里。

四、安装证书

官方文档建议不要直接使用这个目录下的文件,所以使用命令将生成的证书安装到其他的目录。

例如nginx使用的证书,使用下面的命令将证书复制到/etc/letsencrypt/zqyu.com/nginx目录中

$ acme.sh --install-cert -d zqyu.com \
--key-file       /etc/letsencrypt/zqyu.com/nginx/key.pem  \
--fullchain-file /etc/letsencrypt/zqyu.com/nginx/cert.pem

nginx中使用证书

ssl_certificate /etc/letsencrypt/zqyu.com/nginx/cert.pem;
ssl_certificate_key /etc/letsencrypt/zqyu.com/nginx/key.pem;

重新加载nginx配置

$ nginx -s reload

五、证书更新

acme.sh 安装时默认添加了一个自动更新证书的定时任务

57 0 * * * “~/.acme.sh”/acme.sh --cron --home “~/.acme.sh” > /dev/null

所以证书是可以自动更新了,上面的dnsapi账号信息保存到了/.acme.sh/account.conf文件中,安装的目录保存到了/.acme.sh/zqyu.com/zqyu.com.conf,自动更新时会读取这些信息。

更新证书之后需要重新加载nginx配置

$ nginx -s reload

可以将命令也加到定时任务里面

57 0 * * * “~/.acme.sh”/acme.sh --cron --home “~/.acme.sh” > /dev/null && nginx -s reload

六、 acme.sh 更新

手动更新

$ acme.sh --upgrade

设置自动更新

acme.sh --upgrade --auto-upgrade

取消自动更新

acme.sh --upgrade --auto-upgrade 0

七、 acme.sh 卸载

  • 删除文件夹 ~/.acme.sh
  • 使用 crontab -e 删除生成的定时任务
  • 删除别名 unalias acme.sh
  • 删除 ~/.bashrc 中的 . “/root/.acme.sh/acme.sh.env”

参考链接 :

Nginx配置https实现域名访问项目 : https://www.jianshu.com/p/e7b9622a63ed

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值