내 사이트에 접속하는 사용자가 보안되지 않은 HTTP로 인해 숙박이 거부되는 일이 없도록 SSL 연결을 설정하려고 합니다. 기본적으로 HTTP에서 HTTPS로 마이그레이션하려고 합니다.
저는 많은 매뉴얼과 튜토리얼을 연구했고, 제가 한 일의 핵심은 다음과 같습니다.
먼저 다음을 통해 Letcrypt를 다운로드했습니다.
mkdir ~/letsencrypt
cd ~/letsencrypt
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help
그런 다음 nginx 구성으로 이동하여 수정했습니다.
/etc/nginx/sites-available/myptoject
server {
listen 83;
server_name domainname.tk;
location / {
include uwsgi_params;
uwsgi_pass unix:/var/www/flaskapp/myproject.sock;
}
}
~/letsencrypt/letsencrypt에서 다음을 실행합니다.
./letsencrypt-auto --apache -d domainname.tk
모든 것이 순조롭게 진행된 후 선호하는 프로토콜(HTTP 및 HTTPS, 내 이메일)을 입력했지만 결국 다음 메시지가 표시되었습니다.
Plugins selected: Authenticator nginx, Installer nginx
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for domainname.tk
Using default address 80 for authentication.
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. domainname.tk (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authoriza tion :: Invalid response from http://domainname.tk/.well-known/acme-challenge/qD7pzA8UtegkcXIhoOQUvCM92eG5hrahtYOLAYJAujw: "< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<titl"
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: domainname.tk
Type: unauthorized
Detail: Invalid response from
http://domainname.tk/.well-known/acme-challenge/qD7pzA8UtegkcXIhoOQUvCM92eG5hrahtYOLAYJAujw:
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<titl"
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.
이 오류는 이름 사이에 충돌이 있을 때 발생하지만(지금 검색할 수 있는 한) 여기서는 이름 지정에 문제가 없는 것을 볼 수 있습니다. 두 경우 모두 domainname.tk
.
저는 플라스크, Python, nginx, uwsgi를 사용하고 있으며 작업 디렉터리(/var/www/flaskapp/)는 다음과 같습니다.
drwxrwxrwx 7 john john 4096 фев 10 19:57 .
drwxr-xr-x 4 john john 4096 фев 6 21:55 ..
-rwxrwxr-x 1 john john 61939 янв 26 04:50 certbot-auto
drwxrwxr-x 8 john john 4096 фев 10 11:55 .git
-rw-rw-r-- 1 john john 150 фев 9 19:18 home.html
-rw-r--r-- 1 root root 186 фев 8 21:46 myproject.ini
-rw-rw-r-- 1 john john 772 фев 10 17:55 myproject.py
-rw-r--r-- 1 root root 12288 фев 10 16:27 .myproject.py.swo
srw-rw---- 1 john www-data 0 фев 10 18:35 myproject.sock
drwxr-xr-x 2 john www-data 4096 фев 10 17:55 __pycache__
-rw-rw-r-- 1 john john 104 фев 9 18:18 requirements.txt
drwxrwxr-x 2 john john 4096 фев 9 19:18 templates
drwxrwxrwx 5 john john 4096 фев 8 21:44 venv
drwxrwxr-x 3 john john 4096 фев 10 19:58 .well-known
-rw-r--r-- 1 root root 68 фев 8 21:45 wsgi.py
.well-known/acme-challenge 디렉터리를 수동으로 만들었습니다.
그래서 여기서 무엇이 잘못되었는지 모르겠습니다. 정상적으로 작동하는 것 같지만 SSL 키를 설정하려고 하면 오류가 발생합니다. 누구든지 도와줄 수 있나요?
운영 체제는 Ubuntu 16.04 LTS입니다.
어떤 도움이라도 대단히 감사하겠습니다!
편집하다
덧붙이자면 내가 가면 어떻게 되는지http://domainname.tk/.well-known/acme-challenge/qD7pzA8UtegkcXIhoOQUvCM92eG5hrahtYOLAYJAujw
내 홈페이지만 보이고 다른 것은 아무것도 보이지 않습니다. HTML 코드:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>domainname.tk</title>
<meta name="description" content="domainname.tk">
<meta name="keywords" content="domainname.tk">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-23441223-3']);
_gaq.push(['_setDomainName', 'none']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
(function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<frameset rows="*">
<frame frameborder=0 src="http://myipaddress:83/" name="dot_tk_frame_content" scrolling="auto" noresize>
</frameset>
</html>