2026.01.29[さくらVPS] Rails + Puma + nginx のSSL更新TECH BLOG

  • HOME
  • TECH BLOG
  • [さくらVPS] Rails + Puma + nginx のSSL更新

⚠SSL秘密鍵とSSH秘密鍵は別物。
⚠SSL更新の場合は、すでにSSL秘密鍵はあるので新しいものは作らない。

参考サイト
https://kaiza.org/blog/blog/2020/07/2-ssl.html
https://zenn.dev/masaru21/articles/9238ee1138b717

さくらサーバーマニュアル
https://help.sakura.ad.jp/ssl/2336/
https://help.sakura.ad.jp/ssl/2315/#heading-6

[手順]
① SSHで接続

②nginxを使っているかの確認(見るだけの操作)
sudo systemctl status nginx

③nginx 設定からSSL秘密鍵の場所を取得(見るだけの操作)
現在有効になっているSSL秘密鍵を確認できます。
sudo grep -R “ssl_certificate_key” /etc/nginx


ここから重要

④念のためバックアップ(sudo~key.bakまで全てが1つのコマンド)
SSL秘密鍵ファイルの「コピー(バックアップ)」を作るコマンド
202501.key はバックアップしたい秘密鍵

sudo cp /etc/nginx/ssl_certificate/202501.key \
/etc/nginx/ssl_certificate/202501.key.bak

実行後は下記のフォルダーに複製したものができる
/etc/nginx/ssl_certificate/202501.key.bak

※filezillaでは、アクセスユーザーによっては、202501.key.bakをダウンロードできない(エラーになる)

⑥作業フォルダに移動
cd /etc/nginx/ssl_certificate

ここから先は対話入力が始まるので、⑧の準備をしてからコマンドを実行

⑦CSR作成(sudo~202501.csrまで全てが1つのコマンド)
sudo openssl req -new \
-key 202501.key \
-out 202501.csr

⑧対話入力
CSR作成時の対話入力(完全ガイド)

1.Country Name
Country Name (2 letter code) [AU]:JP
・日本なので JP
・大文字2文字

2.State or Province Name
State or Province Name (full name) [Some-State]:Miyagi
・都道府県(ローマ字 or 英語)
・例:Miyagi, Tokyo, Osaka

3.Locality Name (市区町村)
Locality Name (eg, city) []:Tome
・市区町村
・空でも動くが、入れた方が無難

4.Organization Name(会社名 or 契約者名)
Organization Name (eg, company) []:会社名
・さくらに登録している名義
・個人なら個人名でもOK
・英語表記推奨(例: Taro Yamada)

5.Organizational Unit Name(部署名)
Organizational Unit Name (eg, section) []:部署名
・空でOK
・Enterだけ

6.Common Name(超重要)
Common Name (eg, fully qualified domain name) []:test.com
・SSLを使う ドメイン名そのもの
・nginxの server_name と一致させる
・間違うと証明書エラー

ここに入力すべきドメインの確認方法(サーバーに接続した状態で行う)
sudo grep -R “server_name” /etc/nginx/conf.d/test.conf

7.Email Address
Email Address []:
・空でOK
・Enterだけ

8.その他
途中で聞かれる追加質問(出る場合あり)
A challenge password []:
An optional company name []:
・どちらも Enter(空)でOK

⚠注意点⚠

ミス 結果
Common Name 間違い 証明書使えない
いま使ってないドメイン 更新失敗
新しい秘密鍵作成 既存SSLと不一致

 

⑨CSRの表示(—–BEGIN~REQUEST—–までをコピー)
cat 202501.csr

実行すると下記のようなテキストが表示されるので、失くさないように保管してください。
—–BEGIN CERTIFICATE REQUEST—–
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
—–END CERTIFICATE REQUEST—–

⑩お申し込みページから手続き
申し込みページURL
https://secure.sakura.ad.jp/signup3/ssl/member.html?_ga=2.137174899.259861263.1647214443-29105624.1631173055&_gl=1*13ahmnu*_gcl_aw*R0NMLjE3NjkxNDIxMDEuQ2p3S0NBaUFzc2ZMQmhCREVpd0FjTHB3ZnRXVXg1UVVtUlpWa1RhMXYzcWVsQWxFdGpUVVBkU0liR1FXSVNKWnJRNGVHTTZVVWExVHF4b0NLZ1FRQXZEX0J3RQ..*_gcl_au*MzM4MTI4NjcxLjE3NjkwNjMzODYuMzA5ODgwNzkxLjE3NjkxNDMxNzkuMTc2OTE0MzE3OQ..

※今回のやり方では、ファイル認証方式を選択してください。

⑪CSRの入力
更新内容を入力し、進んでいくとCSRの入力欄が出てきます。
そこに、⑨で取得したコードを貼り付ける。

⑫お支払い
支払い完了後にまだ作業があります。

⑬ファイル認証
⑩でファイル認証方式を選んだ場合は、お支払後に「SSLサーバー証明書 認証ファイルのアップロードのお願い」というメールが届く
その後、サーバーパネルより「サーバー証明書」のダウンロードを行う(txt)
やり方:https://help.sakura.ad.jp/ssl/2331/#heading-3

⑭サーバー証明書のアップロード
メールで指定されたフォルダーを作成し、そこにサーバー証明書をアップロードする

例:
http://www.example.com/.well-known/pki-validation/[ランダムな文字列].txt
(または、https://www.example.com/.well-known/pki-validation/[ランダムな文字列].txt

今回の場合だと↓
/home/ubuntu/test/web/public/.well-known/pki-validation/ここに入れる
やり方:https://help.sakura.ad.jp/ssl/2315/#heading-6

⑮証明書発行完了メール(まだ完了じゃないです)
認証ファイルのアップロード後、2日以内に証明書発行完了メールが届く。
届かない場合は、何らかの原因により認証局が認証ファイルを検知できていない可能性がある。

⑯証明書のダウンロード
メールの内容に従ってSSLサーバ証明書ダウンロード、中間CA証明書のダウンロードを行う

⑰2つの証明書を結合させる
ローカル環境に2つの証明書を入れたフォルダーを作成
その後、下記のコマンドを実行

対象フォルダーに移動(sslという名前でフォルダーを作った場合)
cd /Applications/MAMP/htdocs/ssl

結合のコマンド(cat 中間CA証明書 >> SSLサーバ証明書)
cat JPRS_DVCA_G4_PEM.cer >> 20260123.crt

注意
合体したファイルは結合部分が
—–BEGIN CERTIFICATE———-END CERTIFICATE—–
とつながってしまっている場合がある、間に改行を入れないとエラーになる。

その場合は、下記のようにエディタで編集する。
—–BEGIN CERTIFICATE—–
—–END CERTIFICATE—–

⑱結合ファイルをサーバーにアップロード(FileZillaでできなかった時)
結合ファイルがある場所に移動
cd /Applications/MAMP/htdocs/ssl

scp でサーバーにアップロード
「ubuntu@111111111111.sakura.ne.jp」はsshの接続情報です。
scp 20260123.crt ubuntu@111111111111.sakura.ne.jp:/tmp/

※この時、scp でいきなり /etc/nginx/… に送ろうとすると権限で失敗しがちなので、一旦tmpにアップロード

サーバーにログインし、crtを正しい場所に移動
sudo mv /tmp/20260123.crt /etc/nginx/ssl_certificate/

パーミッション確認(念の為)
sudo chown root:root /etc/nginx/ssl_certificate/20260123.crt
sudo chmod 644 /etc/nginx/ssl_certificate/20260123.crt

ファイルがあるか確認
ls -l /etc/nginx/ssl_certificate/20260123.crt

⑲ Nginx に SSL/TLSを設定
設定ファイルを編集
sudo nano /etc/nginx/conf.d/test.conf

現在の設定内容が表示されるので、下記のファイル名部分を編集
ssl_certificate     /etc/nginx/ssl_certificate/ここです;
ssl_certificate_key /etc/nginx/ssl_certificate/ここです;

編集画面の使い方

やりたいこと キー
保存 Ctrl + O
Enterで確定 Enter
終了 Ctrl + X
検索 Ctrl + W
切り取り Ctrl + K
貼り付け Ctrl + U

 

⑳設定の文法チェック
sudo nginx -t
下記が出たらOK
syntax is ok
test is successful

㉑nginx 再読み込み
sudo systemctl reload nginx

㉒最終確認
サイトを開いてみる(念の為シークレット)
→ 🔒 マークをクリック
→ 証明書の詳細
→ 有効期限・発行元を見る

文法チェック
sudo nginx -t
下記が出たらOK
syntax is ok
test is successful

nginx の再読み込み時刻を確認
sudo systemctl status nginx