發布日期:Sep 23, 2021
文章於 Sep 23, 2021 更新
由於目前專案中,nginx 服務是一個 docker container ,所以加了新的 conf.d 檔案後,需要重啟 nginx container 才能吃到新設定。
但是今天在加上新設定前,失手對正常運作中的 nginx container 執行了 docker-compose down
& docker-compose up -d
後,容器居然沒有重啟成功,
以 docker ps
檢查狀態,發現容器果然持續卡在 restarting ,用 docker logs [container name]
檢查狀況,看到 log 中記錄了
nginx: [emerg] cannot load certificate "/ssl/xxxx.bundle": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/ssl/xxxx.bundle','r') error:2006D080:BIO routines:BIO_new_file:no such file)
因為沒有深入碰過 ssl 憑證,所以我只能先確認到底是誰在使用 xxxx.bundle 這個檔案,
查了一下發現是前後端容器的 nginx 跳轉設定 (nginx > conf.d > .conf) 裡面,指定 ssl 憑證檔時使用。
ssl_certificate /ssl/xxxx.bundle;
ssl_certificate_key /ssl/xxxx.key;
既然重啟前網站是好的,沒道理什麼都沒改的情況下會找不到 bundle 檔,切到該 nginx 容器目錄的 ssl 裡面瞧瞧,
/[environment project folder]/xxx_docker_environment/nginx/production_proxy/ssl
還真的沒有 xxxx.bundle 這隻檔案,只留下 xxxx.key 孤零零坐在那邊……
是在跟我開玩笑?!為啥 bundle 會消失?他是不需要的嗎?!!
抱著死馬當活馬醫的心態,總之先照報錯的指示把 bundle 檔生出來。
生出來的方法是:
ssl 的憑證檔+ ssl 的中介憑證 = bundle 檔
xxx.crt + xxx.ca_bundle = xxx.bundle
參考:中繼憑證設定遺失問題
長出 bundle 檔以後,容器就重啟成功了,謝天謝地。
發現我的 hugo blog theme 不是用 add 的,而是直接 pull remote repository ?!!
長長 ssl 知識
x
x
解決眼前的問題,很讚!