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)」をサーバー上で作成します。
1.openssl がインストールされていることを確認します。(Ubuntuには通常標準で入っています) openssl version
2.Nginx用のSSL証明書置き場を作成し、移動します。 sudo mkdir -p /etc/nginx/ssl cd /etc/nginx/ssl
3.秘密鍵の作成 (パスフレーズ付き)
まずはセキュリティのためにパスフレーズ(パスワード)付きの秘密鍵を作成します。
# 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: (同じパスワードを再入力)
※このパスワードは後で使いますので、絶対に忘れないでください。
4.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)
5.CSRの内容をコピー 作成されたCSRファイルの中身を cat コマンドで表示し、全内容をコピーします。(-----BEGIN... から ...END----- まで全て) cat dify.example.com.csr
CSR の確認方法
/etc/httpd/conf/server.csrをcatコマンドを用いて表示します。
| # cat server.csr—–BEGIN CERTIFICATE REQUEST—–SlVHRU1VIEpVR0VNVSBHT0tPTk8gU1VSSUtJUkUgS0FJSkFSSVNVSUdZT05PIFNVSUdZT01BVFNVIFVOUkFJTUFUU1UgRlVSQUlNQVRTVSBLVU5FUlVUT0tPUk9OSSBTVU1VVE9LT1JPIFlBQlVSQUtPSklOTyBCVVJBS09KSSBQQUlQTyBQQUlQTyBQQUlQT05PIFNIVVJJTkdBTiBTSFVSSU5HQU5OTyBHVVJJTkRBSSBHVVJJTkRBSU5PIFBPTlBPS09QSU5PIFBPTlBPS09OQU5PIENIT0tZVU1FSU5PIENIT1NVS0U=—–ENDCERTIFICATE 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サーバー)
1.DNS認証が完了すると、証明書が発行されます。ConoHaの「セキュリティ」→「SSL」画面で、該当SSLのステータスが「利用中」になったことを確認します。
2.「証明書」というリンクをクリックし、証明書をダウンロードします。
3.必要なのは「証明書(PEM)」と「中間証明書(ICA)」の2つです。それぞれクリックして、テキストファイル(.crt や .pem)としてダウンロードします。
4.ダウンロードした2つのファイルの中身(テキスト)を、サーバー上で1つのファイルにまとめます。
# Ubuntuサーバーに戻る
cd /etc/nginx/ssl
# 結合用の証明書ファイルを作成
sudo vi dify.example.com.crt
5.vi エディタ内で、まず**「証明書(PEM)」の中身を全て貼り付け、続けて「中間証明書(ICA)」**の中身を貼り付けます。
-----BEGIN CERTIFICATE-----
(ダウンロードした「証明書(PEM)」の中身)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(ダウンロードした「中間証明書(ICA)」の中身)
-----END CERTIFICATE-----
6.ファイルを保存して閉じます。これで証明書の準備は完了です。
キーと証明書の整合性を確認する(参考情報)
設定ファイルが見つからない、または確信が持てない場合は、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設定とパスフレーズ解除
1.前回の Let's Encrypt の記事で作成したNginx設定ファイル(例: /etc/nginx/sites-available/dify.example.com)を編集します。 sudo vi /etc/nginx/sites-available/dify.example.com
2.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](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;
}
3.設定をテストしてリロードします。
sudo nginx -t
sudo systemctl reload nginx
# リロード時、秘密鍵のパスフレーズを求められます
# Enter PEM pass phrase for /etc/nginx/ssl/dify.example.com.key: (ステップ2で設定したパスワードを入力)
4.【重要】秘密鍵のパスフレーズを解除する このままでは、サーバーが再起動するたびに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特典・手動更新)の、どちらがご自身の運用スタイルに合うか、比較検討してみてください。
【推奨】業務システム化に有効なアイテム
生成AIを学ぶ



システム化のパートナー(ミラーマスター合同会社)



VPSサーバの選定





コメント