前書き

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

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

image:https://assets.digitalocean.com/articles/peps_ubuntu_1404/peps-macbook.png [PEPS:独自のクラウドインスタンスで実行できるメール、ファイル共有、チャット]

このチュートリアルでは、DigitalOcean DropletにPEPSインスタンスを展開するプロセスをガイドして、データを安全に保存できるようにします。

前提条件

PEPSは、セットアップを簡単にするためにDockerコンテナーとして配布されます。 Ubuntu 14.04 x64およびDockerアプリケーションがインストールされたDigitalOcean Dropletが必要です。 具体的には:

  • ユーザー数が少ない場合は、2 GBのメモリを搭載したUbuntu 14.04 x64ドロップレット。 より多くのユーザーが必要な場合、またはデータ用により多くのストレージが必要な場合は、4 GB以上のRAMを選択します。

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

ドロップレットの名前は重要です:外部の受信者にメールでメッセージを送信する場合は、メッセージがスパムとしてフラグ付けされないように_Reverse DNS_を構成します。 良いニュース:DigitalOcean https://www.digitalocean.com/community/questions/how-do-i-set-up-reverse-dns-for-my-ip [自動構成]ドロップレット名が設定されている場合、PTRレコードFQDN(完全修飾ドメイン名)。 `+ mail.example.com `からメールを送信する場合、それはドロップレットの名前でもあります(アドレスが ` user @ example.com +`の形式であっても)。

このチュートリアルのすべてのコマンドは、非rootユーザーとして実行する必要があります。 コマンドにルートアクセスが必要な場合は、先頭に「+ sudo +」が付きます。 Ubuntu 14.04での初期サーバー設定では、ユーザーを追加してsudoアクセスを許可する方法について説明しています。

ステップ1-Dockerのインストール

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

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

sudo usermod -aG docker

また、この変更をアクティブにするには、非rootユーザーとしてログアウトして再度ログインする必要があります。

ステップ2-PEPSの展開

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

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

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

`+ PEPS +`ディレクトリに移動します:

cd PEPS

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

echo  > domain

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

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

sudo apt-get update
sudo apt-get install make

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

make build

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

Removing intermediate container 38d212189d43
Successfully built 24fd74241e48

最初の起動では、一時的なSSL / TLS証明書を作成し、コンテナを実行します。 (両方のステップはほとんど瞬時に行われるため、次のコーヒーブレイクをとるとは思わないでください。)

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

次のコマンドで一時的なSSL証明書を作成します。

make certificate

単純なパスフレーズを選択してください。4回入力するよう求められ、証明書はプレースホルダーです。 ほとんどの質問はスキップできます:重要な質問は `+ Common Name(e.g. サーバーのFQDNまたはあなたの名前)[]:+ `ドメインと同じである必要があります。

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

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]:
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) []:
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を起動する準備ができました。

sudo make run

ステップ3-初めてのログイン

ブラウザから「+ https:// 」にアクセスして、IPアドレスを使用してDropletに接続します。「+」はDropletのIPアドレスです。

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

image:https://assets.digitalocean.com/articles/peps_ubuntu_1404/ssl_chrome.png [Chromeは間違ったSSL証明書について警告します。後で修正します]

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

image:https://assets.digitalocean.com/articles/peps_ubuntu_1404/first_run.png [PEPSは機能しています。管理者パスワードを選択してください]

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

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

image:https://assets.digitalocean.com/articles/peps_ubuntu_1404/peps_interface.png [データのないPEPSインターフェース]

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

ステップ4-ドメインのセットアップ

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

DNSから始めましょう。 ドメイン名プロバイダーに応じて、独自のインターフェイスを使用してドメインのDNSエントリを設定するか、独自のDNSサーバーを設定します。 独自のDNSサーバーをセットアップする場合は、https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-を使用できますhttps://www.digitalocean.com/community/tutorial_series/an-introduction-to-managing-dnsの一部であるubuntu-14-04 [Ubuntu 14.04でプライベートネットワークDNSサーバーとしてBINDを構成する方法]の記事[DNSの管理の概要]記事シリーズ。

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

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

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

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

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

ステップ5-SSL証明書のセットアップ

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

次は、SSL証明書を設定します。 SSL証明書をまだお持ちでない場合は、プロバイダーまたはhttps://www.digitalocean.com/community/tutorials/how-to-set-up-apache-with-a-free-signed-から購入できます非営利目的でのssl-certificate-on-a-vps [無料のSSL証明書の設定]。

https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority [商用認証局からSSL証明書をインストールする方法]の記事SSL証明書の購入方法など、SSL証明書に関するすべてを説明しています。

+ / etc / peps / +`ディレクトリにある `+ server.key`と + server.crt`という名前のキーと証明書の両方を必ずコピーしてください。

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

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

ここで、「++」はドロップレットのIPアドレスです。

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

ステップ6-テスト

さらにユーザーを作成するには、ユーザー名に「+ admin +」を、管理者ユーザーとしてログインし、「ステップ3:初めてログインする」で作成したパスワードを使用してログインします。 管理者ユーザーは、ドメインのメールアカウントを作成できます。 方法については、https://github.com/MLstate/PEPS/wiki/Admin-Manual [PEPS Admin Manual]にアクセスしてください。

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

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

結論

おめでとうございます。 これで、DigitalOcean Dropletで実行されているPEPSのインスタンスができました。 (https://github.com/MLstate/PEPS-chat[chat]などのプラグインを実行して)メッセージを安全に送信したり、ファイルを共有したりできます。

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

PEPSに関する最新ニュースについては、https://facebook.com/endtoend [PEPS Facebookページ]もご覧ください。