Let's Encrypt: CentOS/RHEL 7下的nginx安装https

开发需要做一个小后台,但是需要https访问,Let's Encrypt也蛮好用的。

系统环境:

Centos7.3 nginx1.10.2

安装:

yum install -y epel-release

yum install -y certbot

做好相应域名比如abc.com的解析;

方法1:在网站根目录下创建一个.well-known的目录

2

某次运行命令以后报错:Anunexpectederroroccurred:

ValueError:Extradata:line1column77-line38column1(char76-1828)
Pleaseseethelogfilesin/var/log/letsencryptformoredetails.

按照方法2来的:

mkdir -p /etc/nginx/cert/.well-known

ln -s /etc/nginx/cert/.well-known /data/gop/gop.abc.com/.well-known

cd /data/gop/

ll

.well-known -> /etc/nginx/cert/.well-known/

certbot certonly --webroot -w /etc/nginx/cert -d gop.abc.com

命令执行:

certbot certonly --webroot -w /etc/nginx/cert -d gop.abc.com

根据提示进行操作,一般可以正常生产证书文件。


可以默认的nginx目录直接操作,当时在/data/gop/创建了个文件夹,准备放这个文件夹下面。

2.

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Plugins selected: Authenticator webroot,Installer None

Enter email address (used for urgent renewal and security notices) (Enter 'c' to

cancel): 你的email续期不成功会提示你续期;

Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

-------------------------------------------------------------------------------

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-v01.api.letsencrypt.org/directory

(A)gree/(C)ancel: 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 EFF and

our work to encrypt the web,protect its users and defend digital rights.

(Y)es/(N)o: Y


Starting new HTTPS connection (1): supporters.eff.org

Obtaining a new certificate

Performing the following challenges:

http-01 challenge for tng.abc.com

Using the webroot path /etc/nginx/cert for all unmatched domains.

Waiting for verification...

Cleaning up challenges


IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at:

/etc/letsencrypt/live/ gop.abc.com/fullchain.pem

Your key file has been saved at:

/etc/letsencrypt/live/gop.abc.com/privkey.pem

Your cert will expire on 2018-05-27. 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 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

证书文件的目录存放在: '/etc/letsencrypt/live/example.com/'
会有4个文件:
cert.pem
chain.pem
fullchain.pem
privkey.pem
特别要注意,这条命令只会将生成的证书放在这个目录,不会有一个/etc/letsencrypt/live/ gop.abc.com /目录,gop.abc.com的证书,具体看后面的nginx配置。
3.


nginx配置类似这样的:

server {
 listen 443 ssl http2;
 server_name example.com;
 index index.html index.htm index.php;
 root /data/www/example.com;

 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
 ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_session_cache shared:SSL:10m;
 access_log off;
}
 server_name test.example.com;
 root /data/www/test.example.com;
}

具体配置:nginxtomcat配合反向代理tomcat

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events {

worker_connections 1024;

}

http {

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

types_hash_max_size 2048;

include /etc/nginx/mime.types;

default_type application/octet-stream;

client_max_body_size 8M;

# Load modular configuration files from the /etc/nginx/conf.d directory.

# See http://nginx.org/en/docs/ngx_core_module.html#include

# for more information.

include /etc/nginx/conf.d/*.conf;

upstream app {

server localhost:9089;

server {

listen 80;

server_name gop.abc.com;

rewrite ^(.*)$ https://$host$1 permanent;

listen 443 ssl;

ssl on;

ssl_certificate /etc/letsencrypt/live/ gop.abc.com /fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/ gop.abc.com /privkey.pem;

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECD************';

ssl_prefer_server_ciphers on;

location / {

# First attempt to serve request as file,then

# as directory,then fall back to displaying a 404.

#try_files $uri $uri/ =404;

#include proxy_params;

proxy_pass http://app;

#proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-Host $host;

proxy_set_header X-Forwarded-Server $host;

#proxy_redirect http:// https://;

proxy_redirect http:// $scheme://;

# allow 11.11.11.11;

# allow 22.22.22.22;

# deny all;

}

4.定期更新

crontab-e#新增如下定时任务
10 6 * * * /bin/certbot renew --quiet &>/dev/null
Let'sEncrypt的证书有效期为90天,如果证书的有效期大于30天,则上面命令不会真的去更新证书的。


https测试

在浏览器输入https://gop.abc.com网址进行验证,一般Chrome会有一个绿色的锁以及Secure标示。

原url:

https://www.cnblogs.com/mawang/p/6758728.html

以上做一个小小笔记以后参考。


PS:续期的问题收到续期邮件了,

原来用/bin/certbot renew 会报错:

All renewal attempts failed. The following certs could not be renewed:

/etc/letsencrypt/live/gop.abc.com/fullchain.pem (failure)

-------------------------------------------------------------------------------

- The following errors were reported by the server:


Domain: gop.abc.com

Type: unauthorized

Detail: Invalid response from

http://gop.abc.com/.well-known/acme-challenge/dyWcllqMylBGnpdhsa8MTq0B1yl_HabaBanjj11s:

"<!DOCTYPE html><html><head><title>

report</title><style type="text/css">H1 {font-family:Tahoma,Arial"


To fix these errors,please make sure that your domain name was

entered correctly and the DNS A/AAAA record(s) for that domain

contain(s) the right IP address.


查日志看logtail -100f /var/log/letsencrypt/letsencrypt.log看不出头绪,到Let's Encrypt看了半天也没似乎有那么点明白也没明白,后来关掉nginx试了一下这个命令:

certbotrenew--standalone

居然成功了!


new certificate deployed without reload,fullchain is

/etc/letsencrypt/live/gop.abc.com/fullchain.pem

-------------------------------------------------------------------------------


Congratulations,all renewals succeeded. The following certs have been renewed:

/etc/letsencrypt/live/gop.abc.com/fullchain.pem (success)

-------------------------------------------------------------------------------

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor&#160;1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep &#39;Time zone&#39;查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=&quot;static&quot; ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// &lt;summary&gt; /// 取小写文件名后缀 /// &lt;/summary&gt; /// &lt;param name=&quot;name&quot;&gt;文件名&lt;/param&gt; /// &lt;returns&gt;返回小写后缀,不带“.”&lt;/ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start &amp; nohup ./kibana &amp;
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的&#160;Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程,&#160;ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属