發布日期:Sep 23, 2021

文章於 Sep 23, 2021 更新

20210923

事件紀錄

消失的 .bundle 檔

由於目前專案中,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 ?!!

總結

1. 工作技能有沒有因此成長了?

長長 ssl 知識

2. 計畫如何改善現況或者可以試著做得更好?

x

3. 如何在這件事上提升效率?

x

4. 有沒有把時間花在刀口上?

解決眼前的問題,很讚!

關鍵字

  • ssl
  • nginx
  • bundle