๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
devOps/Nginx

[ ์—”์ง„์—‘์Šค(Nginx) ] nginx: [emerg] cannot load certificate BIO_new_file() failed SSL ์˜ค๋ฅ˜ ํ•ด๊ฒฐํ•˜๊ธฐ

by YWTechIT 2022. 3. 14.
728x90

๐Ÿ“ nginx: [emerg] cannot load certificate BIO_new_file() failed SSL ์˜ค๋ฅ˜ ํ•ด๊ฒฐํ•˜๊ธฐ

Docker-compose๋กœ ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐฐํฌ ์‚ฌ์ดํŠธ์— SSL์„ ์ ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.

nginx: [emerg] cannot load certificate "/etc/nginx/ssl/live/<domain>/fullchain.pem"
: BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/ssl/live/<domain>/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

 

๋‚˜๋Š” letsencrypt์—์„œ SSL ์ธ์ฆํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•˜๊ณ  ์ธ์ฆ์„œ์˜ ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์ด ์ง€๋‚˜์ง€ ์•Š์•˜๋Š”๋ฐ, Docker๋กœ ์ƒˆ๋กœ์šด container๋ฅผ ์ƒ์„ฑํ•˜๋‹ค๋ณด๋‹ˆ ์ด์ „์— ์žˆ๋˜ container๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•˜์—ฌ(๊ธฐ๋ก๋„ ์•ˆ ๋‚จ๊ฒŒ rm -rf๋กœ..) ๊ธฐ์กด์— certbot๊ณผ ๊ด€๋ จํ•œ ํŒŒ์ผ๋“ค์€ ๋ง๋”ํ•˜๊ฒŒ ์‚ฌ๋ผ์กŒ๋‹ค. SSL์„ ์ ์šฉํ•˜๋ ค๋ฉด ์ธ์ฆ์„œ๋ฅผ ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐœ๊ธ‰ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ธ๋ฐ, ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๋„๋กœ ์ธํ•ด ์ƒˆ๋กœ ๋ฐœ๊ธ‰๋ฐ›์œผ๋ ค๋ฉด 7์ผ์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ–ˆ๋‹ค. (๊ด€๋ จ ๊ธ€: too many certificates)

 

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์—†๋Š”์ง€ ํ•œ์ฐธ์„ ๊ณ ๋ฏผ ๋์— VM ware ๊ฐ€์ƒํ™˜๊ฒฝ ํŒŒ์ผ์„ ์ด๊ฒƒ์ €๊ฒƒ ๋‘˜๋Ÿฌ๋ณด๋‹ˆ /etc/letsencrypt/ ํด๋”์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ผ๋“ค์ด ์žˆ์—ˆ๋‹ค. ์ฒ˜์Œ์— ์ด๊ฒƒ๋“ค์ด ๋ฌด์Šจ ํŒŒ์ผ์ธ์ง€ ๋ชฐ๋ž๋Š”๋ฐ, ์ƒ๊ฐํ•ด๋ณด๋‹ˆ๊นŒ letsencrypt์—์„œ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์„ ๋ดค๋˜ ๊ธฐ์–ต์ด ์žˆ์—ˆ๋‹ค.

Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/<domain>/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/<domain>/privkey.pem

ํ˜ธ๋‹ค๋‹ฅ /etc/letsencrypt/live/์œผ๋กœ ๋“ค์–ด๊ฐ€๋‹ˆ๊นŒ ์ธ์ฆ์„œ ๊ด€๋ จ ํŒŒ์ผ๋“ค์ด ์žˆ์—ˆ๋‹ค. (docker container๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋‚˜์˜ค๋Š” ํ™˜๊ฒฝ์ด ์•„๋‹Œ SSHํ™˜๊ฒฝ์˜ ๊ฒฝ๋กœ์ด๋‹ค.)

728x90

๊ทธ๋ž˜์„œ ๊ฐ€์ƒํ™˜๊ฒฝ์˜ ./certbot/conf/์—์„œ sudo rm -rf conf/๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด conf/ ํด๋”๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  /etc/letsencrypt/์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ๋ชจ๋‘ certbot/conf/ ํด๋” ๋‚ด๋ถ€๋กœ ์˜ฎ๊ฒผ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•œ ๋ช…๋ น์–ด๋Š” sudo cp -r * <๋ถ™์—ฌ ๋„ฃ์„ ๊ฒฝ๋กœ>๋‹ค. (์ฃผ์˜ ํ• ์ ์€ cp -r๋กœ๋งŒ ๋ณต์‚ฌํ•˜๋ฉด cert.pem, fullchain.pem์ฒ˜๋Ÿผ .pemํŒŒ์ผ์€ ์ œ๋Œ€๋กœ ๋ณต์‚ฌ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ช…๋ น์–ด์— *๋ฅผ ๋ถ™์—ฌ์ฃผ์ž.) ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋œจ์ง€ ์•Š๊ณ  ์ •์ƒ์ ์œผ๋กœ SSL๋กœ ์ง„์ž…ํ•˜๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์—ฌ๋‹ด์œผ๋กœ docker-compose๋กœ Nginx๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ Nginx๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์ค˜์•ผ ์ˆ˜์ •์‚ฌํ•ญ์ด ๋ฐ˜์˜๋œ๋‹ค. docker-compose restart nginx๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Nginx๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์ฃผ๋ฉด Restarting git-farm_nginx_1... done ์ด๋ž€ ๋ฌธ์žฅ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๊ธ€๋กœ ์ •๋ฆฌํ•ด๋ณด๋‹ˆ ๋‚œ์ด๋„๊ฐ€ ์žˆ๋Š” ์ž‘์—…์€ ์•„๋‹ˆ์—ˆ๋Š”๋ฐ, ๋งˆ๋•…ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์—†์–ด ์ด๊ฒƒ์ €๊ฒƒ ์‹œ๋„ํ•œ ๊ฒƒ์ด (์ผ๋ช… ์‚ฝ์งˆ) ์˜ค๋ž˜ ๊ฑธ๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋กœ ๊ณ ์ƒํ•˜๊ณ  ์žˆ๋Š” ๋ถ„๋“ค์—๊ฒŒ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๊ณ  Nginx.conf ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ๋ฉฐ ๊ธ€์„ ๋งˆ์น˜๊ฒ ๋‹ค.

# nginx.conf
user nginx; 
worker_processes 1; 

events {
    worker_connections 1024;
}

http {
    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    server {
        listen 80;
        server_name <domain>;
        root /usr/share/nginx/html/;

        location ~ /.well-known/acme-challenge {
            allow all;
            root /usr/share/nginx/html/letsencrypt;
        }

        location / {
            return 301 <domain>$request_uri;
        }
    }

    server {
        listen 443 ssl;
        server_name <domain>;
        root /usr/share/nginx/html/;
        server_tokens off;

        ssl_certificate /etc/nginx/ssl/live/<domain>/fullchain.pem;
        ssl_certificate_key /etc/nginx/ssl/live/<domain>/privkey.pem;
        ssl_dhparam /etc/nginx/dhparam/dhparam-2048.pem;

        ssl_buffer_size 8k;
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

        location / {
           try_files $uri /index.html;
        }

        location /api {
            proxy_pass http://backend:7777;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }
}
๋ฐ˜์‘ํ˜•

'devOps > Nginx' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ ์—”์ง„์—‘์Šค(Nginx) ] [ warn ] the "ssl" directive is deprecated, use the listen ...  (0) 2022.03.11

๋Œ“๊ธ€