https를 지원하도록 nginx를 구성하는 방법

王林
풀어 주다: 2023-05-16 15:49:27
앞으로
7379명이 탐색했습니다.

1. 소개

Hypertext Transfer Protocol http 프로토콜은 웹 브라우저와 웹 사이트 서버 간에 정보를 전송하는 데 사용되며 공격자가 가로채는 경우 어떤 형태의 데이터 암호화도 제공하지 않습니다.

따라서 http 프로토콜은 신용 카드 번호, 비밀번호 및 기타 결제 정보와 같은 일부 민감한 정보를 전송하는 데 적합하지 않습니다. http 문제를 해결하려면 프로토콜의 이 결함으로 인해 SSL(Secure Socket Layer Hypertext Transfer Protocol)인 https라는 다른 프로토콜을 사용해야 합니다. 데이터 전송 보안을 위해 SSL은 HTTP에 SSL 프로토콜을 추가하여 인증서의 신원을 확인합니다. 브라우저와 서버 간의 통신을 암호화합니다.

2. https의 장점

https가 절대적으로 안전하지는 않지만, 루트 인증서를 관리하는 기관이나 암호화 알고리즘을 관리하는 조직도 중간자 공격을 수행할 수 있습니다. 하지만 여전히 https가 가장 안전합니다. 현재 아키텍처에서는 주로 다음과 같은 이점이 있습니다.

(1) https 프로토콜을 사용하여 사용자와 서버를 인증하여 데이터가 올바른 클라이언트와 서버로 전송되도록 합니다.

(2) https 프로토콜이 구축되었습니다. SSL+http 프로토콜에서 암호화된 전송을 수행할 수 있습니다. 신원 인증을 위한 네트워크 프로토콜은 http 프로토콜보다 더 안전하므로 전송 중에 데이터가 도난당하거나 변경되는 것을 방지하고 데이터의 무결성을 보장할 수 있습니다.

(3) https는 현재 아키텍처에서 가장 안전한 솔루션이지만 절대적으로 안전하지는 않지만 중간자 공격 비용을 크게 증가시킵니다.

(4) Google은 2014년 8월에 검색 엔진 알고리즘을 조정하고 "동등한 http 웹 사이트와 비교하여 https 암호화를 사용하는 웹 사이트가 검색 결과에서 더 높은 순위를 차지할 것"이라고 밝혔습니다.

3. https의 단점

https에는 큰 장점이 있지만 상대적으로 말하면 여전히 단점이 있습니다.

(1) https 프로토콜 핸드셰이크 단계는 시간이 더 많이 걸리고 페이지 로드 시간이 길어집니다. 거의 50% 확장되고 전력 소비는 10~20% 증가합니다.

(2) https 연결 캐싱은 http만큼 효율적이지 않으므로 데이터 오버헤드와 전력 소비가 증가하고 기존 보안 조치도 영향을 받습니다. ;

(3) SSL 인증서는 비용이 많이 듭니다. 인증서가 강력할수록 비용도 높아집니다. 개인 웹사이트와 소규모 웹사이트는 일반적으로 필요하지 않은 경우 사용하지 않습니다.

(4) SSL 인증서는 일반적으로 IP에 바인딩되어야 합니다. 여러 도메인 이름은 동일한 IP에 바인딩될 수 없습니다.

(5) https 프로토콜의 암호화 범위도 상대적으로 제한되어 있어 해커 공격, 서비스 거부 공격, 서버 하이재킹 등에 거의 영향을 미치지 않습니다. 가장 중요한 점은 SSL 인증서의 신용 체인 시스템이 안전하지 않다는 것입니다. 특히 일부 국가에서 CA 루트 인증서를 제어할 수 있는 경우 중간자 공격도 가능합니다.

4. certbot을 다운로드하세요

아직 git을 설치하지 않았다면

https를 지원하도록 nginx를 구성하는 방법디렉토리 전환

cd /usr/local
로그인 후 복사

git 저장소 복제

git clone https: // github.com/certbot/certbot.git
로그인 후 복사

방법을 확인하세요. certbot은 /usr/loca/ 디렉터리 看5에 표시됩니다. CERTBOT

Certbot 디렉터리로 전환합니다.

cd /usr/local/certbot
로그인 후 복사
E 디렉터리에 성공하면 설치가 성공한 것입니다.

Certbot 일반 명령

6, https를 지원하도록 nginx를 구성하는 방법 설치 Nginx

7,

https 인증서 신청

현재 인증서 보기

./certbot-auto certificates
로그인 후 복사
첫 번째 실행에서는 중간에 일부 종속성을 설치하게 됩니다. 인증서 신청을 시작하려면 y를 입력하세요. 3개월 동안 유효하며 만료 후 다시 신청해야 합니다.) 방법 1: 도메인 이름을 구성해야 하는 DNS 확인을 사용합니다. 개인적으로 이 방법이 마음에 듭니다./certbot-auto --server https://acme-v02 .api.letsencrypt.org/directory -d 도메인 이름 --manual --preferred-challenges dns-01 certonly 예:

일반 도메인 이름 구성

코드 복사 코드는 다음과 같습니다.

./certbot -auto --server https: // acme-v02.api.letsencrypt.org/directory -d *.nl166.com --manual --preferred-challenges dns-01 certonly

도메인 이름 구성

코드 복사 코드는 다음과 같습니다:

./certbot-auto --server https: // acme-v02.api.letsencrypt .org/directory -d api.nl166.com --manual --preferred-challenges dns-01 certonly

2차 도메인 이름 구성

코드 복사 코드는 다음과 같습니다.

./certbot-auto --server https: / /acme-v02.api.letsencrypt.org/directory -d *.api .nl166.com --manual --preferred-challenges dns-01 certonly

위 그림과 같이 처음에 입력하라고 나오는데, 필수로 이메일 주소만 입력하시면 이메일이 옵니다. 이메일 주소 확인을 위해 클릭이 필요하므로 꼭 실제 이메일 주소를 입력하신 후 필수로 확인해주세요. 확인하지 않으시면 실행이 진행되지 않습니다.

接下来会让你验证域名,按要求解析个txt类型的记录

https를 지원하도록 nginx를 구성하는 방법

保存确认以后再回到服务器中确认

https를 지원하도록 nginx를 구성하는 방법

上面这两个文件就是配置https用到的证书了

方式二:使用插件方式

我们先看看官方怎么说的

https를 지원하도록 nginx를 구성하는 방법

这里我使用的是nginx(申请完会自动帮你重启nginx) 这种方式配置不了泛域名,只能一个一个添加

./certbot-auto --nginx -d api2.nl166.com
로그인 후 복사

https를 지원하도록 nginx를 구성하는 방법

https를 지원하도록 nginx를 구성하는 방법

解决上述报错,请注意,/usr/local/nginx 请替换为你的nginx实际安装位置安装lnmp

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

ln -s /usr/local/nginx/conf/ /etc/nginx
로그인 후 복사

再次执行申请

https를 지원하도록 nginx를 구성하는 방법

中途会询问你请选择是否将http流量重定向到https,删除http访问。可根据自己的需求选择,我这里是c取消选择(实际上这一步可以直接不理,经测试,这一步没有选择前,访问网址https已经可以访问了。)

如果想省略询问这一步,可以添加certonly 该种方式只会生成证书,不做其余操作,证书配置需要自己手动添加 如下:

./certbot-auto certonly --nginx -d api2.nl166.com
로그인 후 복사

https를 지원하도록 nginx를 구성하는 방법

如上图所示,如果你配置了监听443端口的server,他会帮你自动找到对应域名的配置文件,并添加下面两行,还把我格式打乱了,}号与上面{的缩进不对应了,不过不影响功能,这里不知道会不会根据nginx的版本选择是否添加ssl on;

因为我这个nginx版本是不需要这个的,较低版本需要添加ssl on;才能开启https访问。

如没有监听该域名的443端口,则会在如下位置添加信息

https를 지원하도록 nginx를 구성하는 방법

其他方式请自行摸索

8、配置nginx支持https

# https server
 #
 server {
 listen 443 ssl;
 server_name api2.nl166.com;
 root /data/web/im.nl166.com;

 location / {
 index index.php;
 }

 #auth_basic "hello world";
 #auth_basic_user_file /usr/local/nginx/conf/auth/nl166.auth;

 location ~ \.php$ {
 include fastcgi_params;
 fastcgi_pass unix:/tmp/php-fcgi.sock;
 fastcgi_index index.php;
 fastcgi_param script_filename $document_root$fastcgi_script_name;
 }
 location ~ .*.(svn|git|cvs) {
 deny all;
 }

 ssl_certificate /etc/letsencrypt/live/api2.nl166.com/fullchain.pem; # managed by certbot
 ssl_certificate_key /etc/letsencrypt/live/api2.nl166.com/privkey.pem; # managed by certbot
 }
로그인 후 복사

较低版本需要增加ssl on;才能开启https访问。

9、使用shell脚本与定时任务定时续期证书

注意:为避免遇到操作次数的限制,加入 --dry-run 参数,可以避免操作限制,等执行无误后,再去掉进行真实的renew 操作。 方式一的续期

其中域名为/etc/letsencrypt/renewal/目录下的****.conf ,****就是你要填写的域名,比如我生成的时候是*.nl166.com,但是在实际生成的时候是没有*号的

/home/certbot-sh/au.sh 替换成你自己更新dns的脚本

如下:

复制代码 代码如下:

./certbot-auto renew --cert-name nl166.com --manual-auth-hook /data/shell/crontab/auto_update_httpscert. sh --dry-run

https를 지원하도록 nginx를 구성하는 방법

把更新命令放到一个文件,我这里是放在了/data/shell/crontab/auto_update_httpscert.sh 内容如下 ,原来的auto_update_httpscert.sh 更改到/data/shell/cnl_update_httpscert.sh

https를 지원하도록 nginx를 구성하는 방법

增加系统定时任务

crontab -e
로그인 후 복사

#每个星期天凌晨5点执行更新https证书操作

0 5 * * 0 sh /data/shell/crontab/auto_update_httpscert.sh

方式二的续期 如下:

./certbot-auto certonly --renew-by-default --nginx -d api2.nl166.com --dry-run
로그인 후 복사

https를 지원하도록 nginx를 구성하는 방법

增加系统定时任务操作参考方式一

위 내용은 https를 지원하도록 nginx를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!