๋๋ฉ์ธ์ด ์๋ค๋ฉด ๋จผ์ ๋ฌด๋ฃ ๋๋ฉ์ธ์ ๋ฐ๊ธ๋ฐ์ต๋๋ค. ๋ฌด๋ฃ ๋๋ฉ์ธ ๋ฐ๊ธ ์ฌ์ดํธ๋ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐ ๋ถํ๋๋ฆฝ๋๋ค.
๋ฌด๋ฃ ๋๋ฉ์ธ ์ฌ์ดํธ ์๋ด, ๋ด๋๋ฉ์ธ.ํ๊ตญ , freenom
SSL ์ธ์ฆ์ด ์๋์ iptime ๋๋ฉ์ธ ๋์ ํ ๋ฌด๋ฃ ๋๋ฉ์ธ ์ ๊ณต ์ฌ์ดํธ๋ฅผ ์๊ฒ๋์ด ๊ณต์ ํด๋ด ๋๋ค. 1. ๋ด.๋๋ฉ์ธ.ํ๊ตญ https://xn--220b31d95hq8o.xn--3e0b707e/ ๋ด๋๋ฉ์ธ.ํ๊ตญ - ํ๊ธ ๋ฌด๋ฃ ๋๋ฉ์ธ ๋ฑ๋ก์ผํฐ ํ๊ธ ๋ฌด
odaily.tistory.com
Let's Encrypt์์ SSL ์ธ์ฆ์ ๋ฐ๊ธ ๋ฐฉ๋ฒ์ ๋๋ค.
1. ๋ช ๋ น์ด ์ ๋ ฅ
ํฐ๋ฏธ๋์ ์ด์ด ์๋์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ๋๋ค.
sudo certbot certonly --manual
2. E-mail ์ฃผ์ ๋ฐ ๋๋ฉ์ธ ์ ๋ ฅ ํ ์น ์์ค ๋ฐ์ ๋ฐ key ํ์ผ ์ ์ฅ
ํ๋ฒ ์ด๋ฉ์ผ ๋ฑ๋กํ๊ณ ๋๋ฉ์ธ ์ ๋ ฅ ํ ์ธ์ฆ ๊ณผ์ ์์ ์ค๋ฅ ๋๋ฉด ๊ทธ๋ค์ ๋ฒ ์งํ์ ๋ฐ๋ก ๋๋ฉ์ธ ์ ๋ ฅํ๋ผ๊ณ ๋น๋๋ค. ๋๋ฉ์ธ ์ ๋ ฅํ๋ฉด ํฐ๋ฏธ๋์ ์๋์ ๊ฐ์ด ๋ฉ์์ง๊ฐ ๋ฐ์ํฉ๋๋ค.
์ ๋ฉ์์ง ๋ง๋๋ก ํ์ผ ์์ ํค ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํฉ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ์ URL๋ก ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋๋๋ก ์น์์ค๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
app.get('/.well-known/acme-challenge/ํ์ผ์ฃผ์๋ช
', function(req,res) {
fs.readFile(__dirname + "/.well-known/acme-challenge/ํ์ผ์ฃผ์๋ช
", 'utf8' , (err, data) => {
if (err) {
console.error(err)
return
}
res.send(data);
})
})
์์ ํ ์น์ ๋ค์ ๊ตฌ๋ํฉ๋๋ค. ์ฆ http://๋๋ฉ์ธ~~ / ํธ์ถํ๋ฉด ์ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋์ด์ผ ํฉ๋๋ค.
๊ทธ๋ผ ๋ค์ ํฐ๋ฏธ๋๋ก ๋์์ enter๋ฅผ ์
๋ ฅํ์ฌ ์ ์์ ์ธ ๋ฐ๊ธ์ ํ์ธํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ์ ๋ ์๋์ ๊ฐ์ด ์ค๋ฅ๊ฐ 2๋ฒ์ด๋ ๋ฐ์ํ์ฌ ์์ ํ ํ ์ ์ ๋ฐ๊ธํ์์ต๋๋ค.
iptime ๋๋ฉ์ธ https ์ค์ ํ๊ธฐ ์ค๋ฅ : ddns์ caa ์ธ์ฆ ๋ถ๊ฐ
Let's Encrypt CAA ์ค๋ฅ ์์ CAA record for ๋๋ฉ์ธ prevents issuance 2020๋ 7์ ์ดํ์๋ iptime ddns ์ด์ฉํ๋ ์ฃผ์๋ https ์ธ์ฆ์ด ๋ถ๊ฐํ๋ค๊ณ ํ๋ค. ์ด๋ ์ด๋ ํ ์ธ์ฆ์๋ CAA ์ธ์ฆ์ ๋ถํํ๋ฏ๋ก ์ค๋๋..
odaily.tistory.com
SSL ์ธ์ฆ์ ๋ฐ๊ธ ์๋ฌ, An unexpected error occurred: Error creating new order :: too many certificates already issued for
์ธ์ฆ์ ๋ฐ๊ธ ์๋ฌ ํน์ ์ ํ์ ์์ฒญ์ ๋๋ฌด ๋ง์ด ํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. Let’s Encrypt SSL ์ธ์ฆ์๋ 5ํ ๋ฐ๊ธ์ผ๋ก ์ ํ๋์ด ์๋ค๊ณ ํฉ๋๋ค. An unexpected error occurred: Error creating new..
odaily.tistory.com
3. ์ ์์ ์ธ. pem ์ธ์ฆ ๊ด๋ จ ํ์ผ ์์ฑ, ์ ํจ๊ธฐ๊ฐ ํ์ธ(3๊ฐ์)
๋ฐ๊ธ ์งํ์ด ์ ๋๋ฉด ์๋ ๊ฒฝ๋ก์. pem ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
fullchain.pem
privkey.pem
4. ์น ์์ค์ ๋ฐ์ ๋ฐ 443 port ์ด๊ธฐ
๋ฐ๋ก ์น์์ค์์ https ๊ด๋ จ ์์ค ์ ์ฉํฉ๋๋ค.
var ca = fs.readFileSync('/etc/letsencrypt/live/odaily.kro.kr/fullchain.pem')
var privateKey = fs.readFileSync('/etc/letsencrypt/live/odaily.kro.kr/privkey.pem')
var certificate = fs.readFileSync('/etc/letsencrypt/live/odaily.kro.kr/cert.pem')
const credentials = { key: privateKey, cert: certificate, ca: ca }
var app = express()
app.use(express.static('public'));
http.createServer(app).listen(80)
https.createServer(credentials, app).listen(443)
์น ์๋ฒ ์ฌ๊ตฌ๋์ ์ ์์ ์ผ๋ก https๊ฐ ๋์ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์น ์๋ฒ๋ถํฐ ๋์ฐ๋ ๊ฑธ ์๊ณ ์ถ๋ค๋ฉด ์๋ ๋งํฌ๋ถํฐ ํ์ธํด๋ณด์ธ์
Node JS ,express ํจํค์ง๋ก ์น์๋ฒ ๊ตฌ๋ํ๊ธฐ
NodeJs ๊ธฐ์ด ์์๊ฐ๊ธฐ ์๋ํ๋ฅผ ์ํด์๋ Selenium ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก node ,python์ ์ฌ์ฉํ์ฌ ์น์ ์ปจํธ๋กค ํฉ๋๋ค. ํฌ๋กฌ๋ ๊ตฌ๊ธ์์ ๋ง๋ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ GAS (Google App Script) ๋ก Chrome์ ์ ์ดํ ์ ์๋ ์๊ฐ
odaily.tistory.com
๋๊ธ