Difyサーバーを安全に運用するためのHTTPS化は必須です。前回の記事では Let's Encrypt を使った方法を紹介しましたが、ConoHa VPSの「VPS割引きっぷ」を利用している場合、特典として「アルファSSL」(通常は有料)を無料で利用できます。
この記事では、ConoHaの無料特典「アルファSSL」をDifyサーバー(Ubuntu + Nginx)に設定する手順を解説します。
Let’s Encrypt と アルファSSL の主な違い
- Let’s Encrypt (Certbot):
- メリット: 無料。
certbotにより、証明書の取得から90日ごとの更新まで完全に自動化できる。 - デメリット: 特になし。
- メリット: 無料。
- アルファSSL (ConoHa特典):
- メリット: 「VPS割引きっぷ」期間中は無料。企業(GMOグローバルサイン)発行の証明書で、有効期限が1年間と長い。
- デメリット: 1年ごとの更新作業が手動(本記事と同様の手順)になる。
どちらもDifyで問題なく利用できます。運用の手間を最優先するなら Let's Encrypt、ConoHaの特典を活かしたいなら アルファSSL を選択すると良いでしょう。
前提条件
- Ubuntu/Debian系サーバー
- Nginxがインストール済み (Difyのリバースプロキシとして)
- ドメイン取得済み (
dify.example.comなど) - ConoHa VPSで「VPS割引きっぷ」を適用中 (無料特典の条件)
- ファイアウォールでポート 443 (HTTPS) が開いている
ステップ1: アルファSSLの申し込み (ConoHaコントロールパネル)
- ConoHaコントロールパネルにログインし、「セキュリティ」→「SSL」メニューを開きます。
- 「SSLサーバー証明書を追加」をクリック。

- 「アルファSSL」を選択します。

※「VPS 割引きっぷ」を使用中の場合は、利用料金が 0 円になっていることも確認しましょう。 - デュアルアクセス: 「有効」を選択します。(
www.dify.example.comとdify.example.comの両方に対応できます) - 認証方式: 「DNS認証」を選択します。(サーバーのポート80を開ける必要がなく確実です)
- 「次へ」進むと、VPS割引きっぷが適用されている場合、利用料金が「0円」と表示されることを確認します。
ステップ2: 秘密鍵とCSR(証明書署名要求)の作成 (Ubuntuサーバー)
次に、SSL通信の「鍵」となるファイルと、「証明書の発行依頼書 (CSR)」をサーバー上で作成します。
opensslがインストールされていることを確認します。(Ubuntuには通常標準で入っています)openssl version- Nginx用のSSL証明書置き場を作成し、移動します。
sudo mkdir -p /etc/nginx/ssl cd /etc/nginx/ssl - 秘密鍵の作成 (パスフレーズ付き)
まずはセキュリティのためにパスフレーズ(パスワード)付きの秘密鍵を作成します。# 2048bit, 3DES暗号化で秘密鍵 (dify.example.com.key) を作成 sudo openssl genrsa -des3 -out dify.example.com.key 2048 # パスフレーズの入力を求められます (2回入力) # Enter PEM pass phrase: (任意のパスワードを入力) # Verifying - Enter PEM pass phrase: (同じパスワードを再入力)※このパスワードは後で使いますので、絶対に忘れないでください。
- CSR(証明書署名要求)の作成
作成した秘密鍵を使って、CSR (dify.example.com.csr) を作成します。sudo openssl req -new -key dify.example.com.key -out dify.example.com.csr # 秘密鍵のパスフレーズを聞かれます # Enter pass phrase for dify.example.com.key: (先ほど設定したパスワードを入力)続けて、CSRに含める情報を対話形式で入力します。
Country Name (2 letter code) [AU]:JP(国名)State or Province Name (full name) [Some-State]:Tokyo (など、都道府県)Locality Name (eg, city) []: 市区町村(例:Minato-ku)Organization Name (eg, company) [Internet Widgits Pty Ltd]:組織名(例:company)Organizational Unit Name (eg, section) []: 部署名(例:section)Common Name (e.g. server FQDN or YOUR name) []: FQDN (【最重要】SSLを適用するあなたのドメイン名を正確に入力)Email Address []: (空欄エンターでOK)A challenge password []: (空欄エンターでOK)An optional company name []: (空欄エンターでOK)
- CSRの内容をコピー 作成されたCSRファイルの中身を
catコマンドで表示し、全内容をコピーします。(-----BEGIN...から...END-----まで全て)cat dify.example.com.csr
CSR の確認方法
|
# cat server.csr
——–BEGIN CERTIFICATE REQUEST——–
SlVHRU1VIEpVR0VNVSBHT0tPTk8gU1VSSUtJUkUgS0FJSkFSSVNVSUdZT05PIFNV
SUdZT01BVFNVIFVOUkFJTUFUU1UgRlVSQUlNQVRTVSBLVU5FUlVUT0tPUk9OSSBT
VU1VVE9LT1JPIFlBQlVSQUtPSklOTyBCVVJBS09KSSBQQUlQTyBQQUlQTyBQQUlQ
T05PIFNIVVJJTkdBTiBTSFVSSU5HQU5OTyBHVVJJTkRBSSBHVVJJTkRBSU5PIFBP
TlBPS09QSU5PIFBPTlBPS09OQU5PIENIT0tZVU1FSU5PIENIT1NVS0U=
——–END CERTIFICATE REQUEST——–
|
CSRが正しく生成されたか確認するために、以下のコマンドを実行します。
openssl req -text -noout -verify -in server.csr
上記コマンドを実行すると色々と表示されますが、以下確認すれば概ねOKです
Subject: C = JP, ST = Tokyo, L = Minato-ku, O = company, OU = section, CN = xxx.com
ステップ3: CSRの提出とDNS認証 (ConoHaコントロールパネル)
- ConoHaのSSL申し込み画面に戻り、先ほどコピーしたCSRの内容を「CSR 貼付」欄にペーストします。

- 「次へ」進み、申請担当者情報(あなたの情報)を入力します。

- 申請内容を確認(料金0円も再度確認)し、申し込みを完了させます。

- 「DNS認証」の画面に進み、「設定先FQDN」を選択すると、「認証ID」(
xxxxxxxxx...のような文字列)が表示されます。この文字列をコピーします。

- ConoHaの「DNS」管理画面に移動し、Difyで使うドメインを選択します。
- 以下のTXTレコードを追加します。
- タイプ:
TXT - 名称:
@(ドメイン本体) - 値: (先ほどコピーした認証ID)
- タイプ:
- デュアルアクセス(wwwあり)を有効にした場合は、www用のTXTレコードも追加します。
- DNS設定が完了したら、SSLの申し込み画面に戻り、「認証依頼」または「認証確認」のボタンを押します。(DNSの反映には数分〜数時間かかる場合があります)

ステップ4: 証明書のダウンロードと設置 (ConoHa & Ubuntuサーバー)
- DNS認証が完了すると、証明書が発行されます。ConoHaの「セキュリティ」→「SSL」画面で、該当SSLのステータスが「利用中」になったことを確認します。
- 「証明書」というリンクをクリックし、証明書をダウンロードします。

- 必要なのは「証明書(PEM)」と「中間証明書(ICA)」の2つです。それぞれクリックして、テキストファイル(
.crtや.pem)としてダウンロードします。

- ダウンロードした2つのファイルの中身(テキスト)を、サーバー上で1つのファイルにまとめます。
# Ubuntuサーバーに戻る cd /etc/nginx/ssl # 結合用の証明書ファイルを作成 sudo vi dify.example.com.crt viエディタ内で、まず**「証明書(PEM)」の中身を全て貼り付け、続けて「中間証明書(ICA)」**の中身を貼り付けます。-----BEGIN CERTIFICATE----- (ダウンロードした「証明書(PEM)」の中身) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (ダウンロードした「中間証明書(ICA)」の中身) -----END CERTIFICATE------ ファイルを保存して閉じます。これで証明書の準備は完了です。
キーと証明書の整合性を確認する(参考情報)
設定ファイルが見つからない、または確信が持てない場合は、OpenSSLコマンドを使って、キーファイルと証明書ファイルがペアになっているかを確認できます。
1. キーファイルのハッシュ値を計算する
以下のコマンドで、確認したい秘密鍵のハッシュ値を計算します。
openssl rsa -noout -modulus -in server.key | openssl md5
※「server.key」は最初に作成した秘密鍵ファイルです。
2. 証明書ファイルのハッシュ値を計算する
次に、ウェブサイトで使用されているSSL証明書(fullchain.pemなど)のハッシュ値を計算します。
openssl x509 -noout -modulus -in server.crt | openssl md5
※「server.crt」は最後に手で作成した証明書ファイルです。
3. ハッシュ値を比較する
上記2つのコマンドで表示されたハッシュ値が一致すれば、その秘密鍵と証明書は正しいペアです。ハッシュ値が異なれば、秘密鍵ファイルと証明書ファイルが一致していない為、このペアは使用できません。
ステップ5: NginxへのSSL設定とパスフレーズ解除
- 前回の
Let's Encryptの記事で作成したNginx設定ファイル(例:/etc/nginx/sites-available/dify.example.com)を編集します。sudo vi /etc/nginx/sites-available/dify.example.com serverブロック内のssl_certificateとssl_certificate_keyのパスを、今回作成したアルファSSLのファイルパスに変更します。# HTTPS (ポート443) の設定: Dify本体 server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name dify.example.com [www.dify.example.com](https://www.dify.example.com); # wwwも追加 # --- SSL証明書のパス (アルファSSL用に変更) --- ssl_certificate /etc/nginx/ssl/dify.example.com.crt; ssl_certificate_key /etc/nginx/ssl/dify.example.com.key; # --- SSLセキュリティ設定 (推奨) --- ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; # --- ここまでSSL設定 --- location / { proxy_pass(http://127.0.0.1:5001); # DifyのDockerポート # (リバースプロキシ設定は前回と同様) proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } # HTTP (ポート80) から HTTPSへのリダイレクト設定 (前回と同様) server { listen 80; listen [::]:80; server_name dify.example.com [www.dify.example.com](https://www.dify.example.com); return 301 https://$host$request_uri; }http://127.0.0.1:5001- 設定をテストしてリロードします。
sudo nginx -t sudo systemctl reload nginx # リロード時、秘密鍵のパスフレーズを求められます # Enter PEM pass phrase for /etc/nginx/ssl/dify.example.com.key: (ステップ2で設定したパスワードを入力) - 【重要】秘密鍵のパスフレーズを解除する このままでは、サーバーが再起動するたびにNginxが起動せず、手動でパスフレーズを入力する必要があります。Difyをサービスとして安定稼働させるため、秘密鍵のパスフレーズを解除します。
cd /etc/nginx/ssl # 1. 現在のキーファイル (パスフレーズ付き) をバックアップ sudo cp dify.example.com.key dify.example.com.key.pass-protected # 2. パスフレーズを解除した新しいキーファイルを作成 sudo openssl rsa -in dify.example.com.key.pass-protected -out dify.example.com.key # パスフレーズを聞かれます # Enter pass phrase for dify.example.com.key.pass-protected: (設定したパスワードを入力) # writing RSA key # 3. Nginxをリロード (今度はパスフレーズを聞かれずに起動する) sudo systemctl reload nginx
これで、ConoHaのアルファSSLを使ったDifyサーバーのHTTPS化が完了しました。ブラウザから https://dify.example.com にアクセスし、証明書が正しく(GMO GlobalSign発行)表示されることを確認してください。
まとめ
今回は、ConoHa VPSの「VPS割引きっぷ」を利用している場合に**無償で利用できる「アルファSSL」**を設定する方法についてご紹介しました。
Let’s Encrypt(自動更新)とアルファSSL(ConoHa特典・手動更新)の、どちらがご自身の運用スタイルに合うか、比較検討してみてください。



コメント