localhost SSL憑證設定,在本機搞定https設定

很多網站如果不是https開頭,又有用到input= password
google就會給你的不安全的警告,在網址列
使用者看到就會怕怕,PM就會靠么,工程師就會頭很大



還好線上機器管理者多會設定好
所以多數時候local測試環境其實有沒有https沒差
就是有時候一些API會給你挖洞,http正常,切到https就出包
這時候本機沒有https可以測試就會很崩潰
「萬一直接在正式機上搞,會不會壞掉」

於是本機測試環境的ssl憑證設定勢在必行
以下是在 docker 中 使用 nginx 自訂ssl的方法(mac)


  1. 新增放憑證的資料夾(.ssl)
    cd; mkdir .ssl

  2. 取得憑證放到剛剛的資料夾中 (網址範例為ray247k.local)
    openssl req -newkey rsa:2048 -x509 -nodes -keyout .ssl/ray247k.local.key -new -out .ssl/ray247k.local.crt -subj /CN=ray247k.local -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:ray247k.local')) -sha256 -days 3650

    sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain .ssl/ray247k.local.crt

    完成之後資料夾中會有兩個檔案

  3. 設定nginx

    1. yml檔中把憑證volumes進nginx 的 container

    2. yml檔ports 增加 443:443 (https用的port)

    3. nginx vhost 的 conf檔中加入以下內容
      # 加入 SSL 設定
      listen 443 ssl default_server;
      listen [::]:443 ssl default_server;

      # 憑證與金鑰的路徑
      ssl_certificate /ssl/share.crt;
      ssl_certificate_key /ssl/share.key;

    4. 重啟nginx

    5. 完成,可以使用https訪問網址

以上就是設定,之後應該會把 docker 的設計寫成一系列文章,之後啦...

留言