DifyのためのLinux設定:ConoHa VPS無料特典「アルファSSL」設定手順

Dify環境構築

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 EncryptConoHaの特典を活かしたいなら アルファSSL を選択すると良いでしょう。

 

前提条件

  1. Ubuntu/Debian系サーバー
  2. Nginxがインストール済み (Difyのリバースプロキシとして)
  3. ドメイン取得済み (dify.example.com など)
  4. ConoHa VPSで「VPS割引きっぷ」を適用中 (無料特典の条件)
  5. ファイアウォールでポート 443 (HTTPS) が開いている

 

ステップ1: アルファSSLの申し込み (ConoHaコントロールパネル)

  1. ConoHaコントロールパネルにログインし、「セキュリティ」→「SSL」メニューを開きます。
  2. 「SSLサーバー証明書を追加」をクリック。
  3. 「アルファSSL」を選択します。

    ※「VPS 割引きっぷ」を使用中の場合は、利用料金が 0 円になっていることも確認しましょう。
  4. デュアルアクセス: 「有効」を選択します。(www.dify.example.comdify.example.com の両方に対応できます)
  5. 認証方式: 「DNS認証」を選択します。(サーバーのポート80を開ける必要がなく確実です)
  6. 「次へ」進むと、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 の確認方法

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コントロールパネル)

  1. ConoHaのSSL申し込み画面に戻り、先ほどコピーしたCSRの内容を「CSR 貼付」欄にペーストします。
  2. 「次へ」進み、申請担当者情報(あなたの情報)を入力します。
  3. 申請内容を確認(料金0円も再度確認)し、申し込みを完了させます。
  4. 「DNS認証」の画面に進み、「設定先FQDN」を選択すると、「認証ID」(xxxxxxxxx... のような文字列)が表示されます。この文字列をコピーします。
  5. ConoHaの「DNS」管理画面に移動し、Difyで使うドメインを選択します。
  6. 以下のTXTレコードを追加します。
    • タイプ: TXT
    • 名称: @ (ドメイン本体)
    • : (先ほどコピーした認証ID)
  7. デュアルアクセス(wwwあり)を有効にした場合は、www用のTXTレコードも追加します。
    • タイプ: TXT
    • 名称: www
    • : (同じ認証ID)
  8. 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_certificatessl_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特典・手動更新)の、どちらがご自身の運用スタイルに合うか、比較検討してみてください。

コメント

error: Content is protected !!