MLstateのPEPSチームからの記事

序章

私たちは皆、GmailやDropboxのような電子メールとオンラインファイルストレージサービスを使用しています。 ただし、これらのサービスは、個人用および専門用の両方の機密データの保存には適していない場合があります。 重要なビジネス契約や機密情報を添付する際に、彼らのプライバシーポリシーを信頼しますか? すべてのデータが収集、処理、分析されることを受け入れますか?

この問題には解決策があります。PEPSは、エンドツーエンドの暗号化を使用する電子メール、ファイル共有、およびチャットプラットフォームです。 エンドツーエンド暗号化により、暗号化と復号化がサーバーではなくコンピューター(クライアント)で行われるようになります。サーバーでは、機密データがクリアテキストで表示されることはありません。

このチュートリアルでは、データを安全に保存できるように、PEPSインスタンスをDigitalOceanDropletにデプロイするプロセスについて説明します。

前提条件

PEPSは、セットアップを容易にするためにDockerコンテナーとして配布されます。 Ubuntu14.04×64とDockerアプリケーションがインストールされたDigitalOceanドロップレットが必要になります。 具体的には:

  • ユーザーが数人しかない場合は、2GBのメモリを搭載したUbuntu14.04×64ドロップレット。 より多くのユーザーが必要な場合、またはデータ用にさらに多くのストレージが必要な場合は、4GB以上のRAMを選択してください。

  • 自己署名証明書の代わりに使用するSSL証明書を購入します。 これは、実稼働環境に推奨されます。 または、無料の署名付きSSL証明書を作成することもできます。 証明書を作成する手順は、このチュートリアルの後半に含まれています。

ドロップレットの名前は重要です。外部の受信者に電子メールでメッセージを送信する場合は、メッセージがスパムとしてフラグ付けされないように逆引きDNSを構成する必要があります。 朗報:Droplet名がFQDN(完全修飾ドメイン名)に設定されている場合、DigitalOceanはPTRレコードを自動的に構成します。 からメールを送信する予定の場合 mail.example.com、それはあなたのドロップレットの名前でもあるはずです(あなたの住所が [email protected]).

このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。 コマンドにrootアクセスが必要な場合は、その前に sudo. Ubuntu 14.04を使用したサーバーの初期設定では、ユーザーを追加してsudoアクセスを許可する方法について説明しています。

ステップ1—Dockerをインストールする

最初のステップは、Dockerをインストールすることです。 このチュートリアルはDocker1.6.2に基づいています。 Dockerをインストールするための2つのオプションがあります。

また、作成した非rootユーザー(このチュートリアルのすべてのコマンドを実行するユーザー)をに追加する必要があります。 docker ユーザー・グループ。 sammyを自分のユーザー名に置き換えます。

  1. sudo usermod -aG docker sammy

この変更を有効にするには、root以外のユーザーとしてログアウトして再度ログインする必要もあります。

ステップ2—PEPSの展開

を使用してSSH経由でドロップレットに接続します ssh sammy@your_server_ip (ユーザー名とサーバーIPを置き換えます)、次のコマンドを実行して環境を準備します。

まず、リポジトリのクローンを作成します。

  1. git clone https://github.com/MLstate/PEPS

に変更します PEPS ディレクトリ:

  1. cd PEPS

example.com をドメイン名に置き換えて、ドメイン名を構成します。

  1. echo example.com > domain

このコマンドは、という名前のテキストファイルを作成します domain ファイルの最初で唯一の行としてドメイン名を使用します。

makeをインストールします。

  1. sudo apt-get update
  2. sudo apt-get install make

次に、コンテナを作成します。これには約10〜20分かかります。コーヒーを楽しんだり、スタンドアップミーティングをスケジュールしたりできます。

  1. make build

すべてが正常に実行される場合、次のように終了します(IDはランダムに生成され、異なります)。

Removing intermediate container 38d212189d43
Successfully built 24fd74241e48

最初の起動では、一時的なSSL / TLS証明書を作成し、コンテナーを実行します。 (どちらの手順もほぼ瞬時に行われるため、もう一度コーヒーブレイクをするつもりはないと思います。)

ドメインのSSL証明書がすでに手元にある場合は、これをスキップして、代わりに証明書とキーをコピーしてください(手順5を参照)。

次のコマンドを使用して一時SSL証明書を作成します。

  1. make certificate

単純なパスフレーズを選択します。これは、4回入力するように求められ、証明書がプレースホルダーであるためです。 ほとんどの質問はスキップできます:重要な唯一の質問は Common Name (e.g. server FQDN or YOUR name) []: これはドメインと同じである必要があります。

ダイアログの例を次に示します。

openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus [...]
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be [...]
Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []: example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key # strip passphrase
Enter pass phrase for server.key.org:
writing RSA key [...]
Getting Private key

これで、次のコマンドを使用してPEPSを起動する準備が整いました。

  1. sudo make run

ステップ3—初めてログインする

にアクセスして、IPアドレスを使用してドロップレットに接続します https://your_server_ip ブラウザから your_server_ip ドロップレットのIPアドレスです。

現在、一時的なSSL証明書を使用しているため、ブラウザはサイトが安全でないことを警告します。 とにかくそれを受け入れます。 Chromeの場合は、詳細をクリックして続行します。

最初の実行時に、管理者パスワードを作成するように求められます。 複雑さが十分であれば、好みのいずれかを選択してください。

PEPSのエンドツーエンド暗号化により、管理者アカウントはユーザーを作成および削除できますが、既存の暗号化されたユーザーデータにアクセスすることはできません。

管理者パスワードを設定すると、メインのPEPSインターフェイスが表示されます。

次に、ドメインと証明書を適切に設定することに焦点を当てましょう。

ステップ4—ドメインを設定する

インスタンスが正常に実行されたので、ドメインを適切に設定する必要があります。これには、実際のSSL証明書の使用、DNSの構成などが含まれます。

DNSから始めましょう。 ドメイン名プロバイダーに応じて、独自のインターフェイスを使用してドメインのDNSエントリを設定するか、独自のDNSサーバーを設定します。 独自のDNSサーバーをセットアップする場合は、DNS管理の概要の一部であるUbuntu14.04でプライベートネットワークDNSサーバーとしてBINDを構成する方法の記事を使用できます。 ]記事シリーズ。

AレコードとMXレコードの両方を設定する必要があります。 たとえば、架空の example.com でホストされているドメイン mail.example.com:

mail.example.com.	10799	IN   A   your_server_ip
mail.example.com.	10799	IN   MX  example.com.

ドロップレットの名前は次のようになります mail.example.com. 心配しないで。 DigitalOceanアカウントからドロップレットの名前を変更できます。 ドロップレット名をクリックして詳細を確認し、設定タブをクリックしてから、名前変更タブをクリックします。 DNSが更新されるまで待たなければならない場合があります。

追加のレコードを設定することもできます。 オンラインチェッカーMXToolBoxは、ドメインが適切に設定されていることを確認し、いくつかの点についてアドバイスを提供するのに役立ちます。

DNSの伝播は少し遅くなる可能性がありますが、しばらくすると(多くの場合、1時間)、からPEPSにアクセスできるようになります。 https://example.com.

注: PEPSの構成が完了した後、外部ドメインとの間でメールを送受信できない場合は、AレコードとMXレコードを再確認してください。 正しく設定されていないと、自分以外のドメインとメールを送受信できません。

ステップ5—SSL証明書を設定する

ブラウザからの無効なSSL証明書の警告が引き続き表示されます。

次に、SSL証明書を設定します。 SSL証明書をまだお持ちでない場合は、プロバイダーから購入するか、非営利目的で無料のSSL証明書を設定することもできます。

商用認証局からSSL証明書をインストールする方法の記事では、SSL証明書の購入方法を含め、SSL証明書に関するすべてを説明しています。

名前の付いたキーと証明書の両方を必ずコピーしてください server.keyserver.crt の中に /etc/peps/ ディレクトリ。

ローカルコンピューターでそれらを準備し、証明書を含むディレクトリから実行して、ファイルをサーバーにコピーします。

  1. scp server.key server.crt your_server_ip:/etc/peps/

どこ your_server_ip ドロップレットのIPアドレスです。

完了したら、ブラウザがアクセスできることを確認します https://example.com SSLエラーなし。

ステップ6—テスト

より多くのユーザーを作成するには、管理者ユーザーとしてログインします。 admin ユーザー名として、ステップ3:初めてログインするで作成したパスワードを使用します。 管理者ユーザーは、ドメインの電子メールアカウントを作成できます。 方法については、PEPS管理マニュアルにアクセスしてください。

まず、ドメイン内の2人の異なるユーザー間でメールを送受信してみてください。 たとえば、admin @example.comからsammy@example.comにメールを送信してみてください。 それが成功した場合は、サミーにadminに応答させて、逆の操作が成功することを確認してください。

次に、ドメイン外のアカウントにメールを送信します。 これが失敗した場合は、AレコードとMXレコードが正しく構成されていません。 ステップ4:ドメインの設定に戻ります。 ドメイン外のユーザーからのメールの受信もテストすることを忘れないでください。

結論

おめでとう! これで、DigitalOceanDropletで実行されているPEPSのインスタンスができました。 メッセージの送信、ファイルの共有など( chat などのプラグインを実行することにより)を安全に行うことができます。

利用可能ないくつかのマニュアルがあります:

PEPSの最新ニュースについては、PEPSFacebookページもご覧ください。