MENU

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

当ページのリンクには広告が含まれています。

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 の確認方法

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

    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特典・手動更新)の、どちらがご自身の運用スタイルに合うか、比較検討してみてください。

        【推奨】業務システム化に有効なアイテム

        生成AIを学ぶ

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

        VPSサーバの選定

        よかったらシェアしてね!
        • URLをコピーしました!
        • URLをコピーしました!

        コメント

        コメントする

        目次