ID : 2401302045
Tag : #code-server #linux #ssl
๊ฐ์
์ด์ ์์ ์ ์ด์ด ์ด๋ฒ์ Code-Server์ SSL ์ธ์ฆ์๋ฅผ ์ ์ฉํ๊ณ ์ ํ๋ค.
๊ตฌ์ฑ
์๋์ ํญ๋ชฉ์ Code-Server์ SSL ์ธ์ฆ์ ์ ์ฉ์ ์ํ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ฌํญ์ด๋ค.
- OS : Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-1100-raspi aarch64)
- Code-Server : v4.20.1
- Nginx : v1.18.0 (ubuntu)
- Proxy_pass ๊ฐ ๊ตฌ์ฑ๋ ์ํ [https://cajava.tistory.com/62] ๋ฅผ ๋จผ์ ์งํํด์ผ ํจ.
- DNS์ TXT๋ ์ฝ๋๋ฅผ ์ ์ฉํ ์ ์๊ณ Value๋ฅผ ์ปค์คํ ํ ์ ์๋ ๋๋ฉ์ธ ์ฃผ์ (๊ฐ๋น์, CloudFlare ๋ฑ)
์งํ
1. Certbot ์ค์น
์ฐ์ ๋ฌด๋ฃ SSL ๋ฐ๊ธ์ ์ํด ์ฌ์ฉ์ค์ธ ๋ฆฌ๋
์ค ํ๊ฒฝ์ Certbot์ ์ค์นํด์ผ ํ๋ค.
๋๋ Ubuntu ํ๊ฒฝ์์ ์งํํ์ผ๋ฏ๋ก apt ํจํค์ง ๋งค๋์ ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ฒ ๋ค.
sudo apt-get update;
sudo apt-get install -y certbot python3-certbot-nginx
์ค์น๊ฐ ์๋ฃ๋๋ค๋ฉด ์ธ์ฆ์ ๋ฐ๊ธ์ ์งํํ๊ฒ ๋ค.
sudo certbot -d mydomain.com โ-manual โ-preferred-challenges dns certonly
<์คํ ๊ฒฐ๊ณผ>
. . .
Plugins selected : Authenticator manual, Installer None
Enter email address (used for urgent renewal and security notices) (Enter โcโ to cancel) : <MyEmail>@gmail.com
agree in order to register..
yes
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: n Account registered. Requesting a certificate for vm2.mydomain.com Performing the following challenges: dns-01 challenge for vm2.mydomain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name _acme-challenge.mydomain.com with the following value: -FzP4bCvVVXm1p9TTB7v8FCc80TejN83FhKTuIOnQwQ Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
์ฌ๊ธฐ์ ๋๋ฉ์ธ ๊ณต๊ธ์ ์ฒด์์ ์์ ์ฑ๋ฆฐ์ง๋๋ก ์งํ์ ํ๊ณ ์ปจํฐ๋ด๋ฅผ ํ๋ฉด ๋๋ค.
์ธ์ฆ์ ๋ฐ๊ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์ด๋ค์ง๋ฉด
/etc/letsencrypt/live/mydomain.com/fullchain.pem ํ์ผ๊ณผ
/etc/letsencrypt/live/mydomain.com/privkey.pem ํ์ผ์ด ์์ฑ๋๋ค.
2. Nginx์ ์ธ์ฆ์ ์ ์ฉํ๊ธฐ
์ด์ /etc/nginx/sites-available/my-site.conf ๋ฅผ ์์ ํด์ผ ํ๋ค
sudo vim /etc/nginx/sites-available/my-site.conf
<์์ ์ >
server {
listen 5500;
. . .
}
<์์ ํ>
server {
listen 5500 ssl;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
. . .
}
<์ ์ฒด ํ์ผ>
server {
listen 5500 ssl; #์ธ๋ถ ์ ๊ทผ์ ์ํ port (ํฌํธํฌ์๋ฉ๊ณผ ufw๋ฐฉํ๋ฒฝ ํด์ ๋ฅผ ํด์ผํจ.)
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
server_name mydomain.com; #์ธ๋ถ์์ ํธ์ถํ๋ฉด ์ด๋์ํฌ ๋๋ฉ์ธ OR IP๋ ๊ฐ๋ฅ
location / {
proxy_pass http://127.0.0.1:8080; #๋ฐฉ๊ธ ์ธ์๋ ๋ด๋ถ ์์ดํผ์ ์ฝ๋์๋ฒ ์ฃผ์
proxy_set_header Host mydoamin.com:5500; #(์ค์) ํ๋ก์ ํจ์ค๊ฐ ์ด๋ค์ง๋ ํด๋น ํธ์คํธ๋ช
์ ๊ธฐ์ค์ผ๋ก ํ๋กํ ์ฝ์ ์
๋ฐ์ดํธํ๋๋ฐ ์ด๋ถ๋ถ์ด ์๋ชป๋ ๊ฒฝ์ฐ WebSocket[1006] ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
proxy_set_header Upgrade $http_upgrade; #Code-Server์ WebSocket ํ๋กํ ์ฝ ์
๊ทธ๋ ์ด๋๋ฅผ ์ํ ํค๋ ์ง์
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
#access_log /home/<USER_NAME>/access.log;
#error_log /home/<USER_NAME>/error.log; #๋ก๊น
์ ์ํ๋ค๋ฉด ์ฃผ์์ ํด์ ํ๊ณ ์ฌ์ฉํ๋ฉด ๋๋ค.
}
}
# server {
# #๋ค๋ฅธ ์๋ฒ๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ ํฌํธ๊ฐ ๊ฒน์น์ง ์๊ฒ ์ถ๊ฐํ์.
#}
์๋ฃ ๋์๋ค๋ฉด Nginx๋ฅผ ์ฌ์คํ ํ์
sudo nginx -t
#OK ๊ฐ ๋จ๋ฉด ๋ค์์ผ๋ก
sudo systemctl restart nginx.service
์ด์ ์ ์ฉ์ด ์๋ฃ๋์๋ค.
์ง์ https://mydomain.com:5500 ์ฃผ์๋ก ์ ์ํด๋ณด์
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ๊ทธ๋์ http๋ก ํธ์คํ
์ ํ์ง๋ง ์ธ์ฆ์ ์ ์ฉ ์ดํ๋ถํฐ๋ https ๋ก ์ ์์ ํด์ผ ํ๋ค.