一篇文章来自于 PEPS Team at MLstate
介绍
我们都使用电子邮件和在线文件存储服务,如Gmail或Dropbox,但这些服务可能不适合个人和专业敏感数据的存储,我们在附加重要商业合同或机密信息时是否信任他们的隐私政策?我们是否接受所有数据的收集、处理和分析?
这个问题有一个解决方案:PEPS是一个使用端到端加密的电子邮件、文件共享和聊天平台,端到端加密确保加密和解密发生在您的计算机(客户端)上,而不是服务器上,该服务器在清晰的文本中永远不会看到机密数据。
本教程将指导您部署您的PEPS实例在DigitalOcean Droplet上,以便您可以安全地存储数据。
前提条件
PEPS 被分发为 Docker 容器,以便轻松安装,您将需要 Ubuntu 14.04 x64 和安装的 Docker 应用程序的 DigitalOcean Droplet。
*Ubuntu 14.04 x64 Droplet 具有 2 GB 的内存,如果您只有少数用户,选择 4 GB 的 RAM 或更多,如果您需要更多的用户或您只需要更多的数据存储空间
- 购买一个 SSL 证书来使用,而不是自签名的证书;这建议用于生产环境。
您的 Droplet 名称很重要:如果您计划通过电子邮件发送邮件给外部收件人,则需要设置 Reverse DNS 以避免您的邮件被标记为垃圾邮件. 好消息:DigitalOcean 自动配置 PTR 记录,如果您的 Droplet 名称设置为您的 FQDN (完全合格域名)。
本教程中的所有命令都应该作为非根用户运行,如果命令需要 root 访问,则将被sudo
提前。
步骤 1 - 安装 Docker
第一步是安装Docker。本教程是基于Docker 1.6.2。您有2种安装Docker的选项:
- 遵循 Ubuntu 14.04 中的 如何安装和使用 Docker:开始使用 *在创建 Ubuntu 14.04 x64 Droplet 时添加 Docker 应用程序
您还需要将您创建的非根用户(该用户将在本教程中运行所有命令)添加到docker
用户组中。
1sudo usermod -aG docker sammy
您还需要退出并重新登录作为您的非根用户,以便此更改保持活跃。
步骤2 - 部署PEPS
使用ssh sammy@your_server_ip(取代您的用户名和服务器IP),通过SSH连接到您的Droplet,并运行以下命令来准备环境。
首先,克隆存储器:
1git clone https://github.com/MLstate/PEPS
转到PEPS
目录:
1cd PEPS
配置您的域名,以您的域名取代 example.com:
1echo example.com > domain
此命令创建一个名为域
的文本文件,您的域名作为文件中的第一行和唯一行。
安装做:
1sudo apt-get update
2sudo apt-get install make
现在是时候建造容器了,这将需要大约10到20分钟,所以你可以享受一杯咖啡或安排一个站立会议:
1make build
如果一切顺利,它会结束如下(ID是随机生成的,会有所不同):
1Removing intermediate container 38d212189d43
2Successfully built 24fd74241e48
对于第一次推出,我们将创建临时的SSL/TLS证书并运行容器(这两个步骤几乎是即时的,所以不要认为你会再做一次咖啡休息)。
如果您已经为您的域名拥有SSL证书,请跳过这一点,并复制您的证书和密钥(参见步骤5)。
使用命令创建临时SSL证书:
1make certificate
选择一个简单的密码,因为您将被要求输入4次,并且证书是持有者。大多数问题可以被忽略:唯一重要的问题是共同名称(如服务器FQDN或您的名称)
:该名称应该与您的域名相同。
以下是对话的例子:
1openssl genrsa -des3 -out server.key 1024
2Generating RSA private key, 1024 bit long modulus [...]
3Enter pass phrase for server.key:
4Verifying - Enter pass phrase for server.key:
5openssl req -new -key server.key -out server.csr
6Enter pass phrase for server.key:
7You are about to be asked to enter information that will be [...]
8Country Name (2 letter code) [AU]: DE
9State or Province Name (full name) [Some-State]:
10Locality Name (eg, city) []:
11Organization Name (eg, company) [Internet Widgits Pty Ltd]:
12Organizational Unit Name (eg, section) []:
13Common Name (e.g. server FQDN or YOUR name) []: example.com
14Email Address []:
15Please enter the following 'extra' attributes
16to be sent with your certificate request
17A challenge password []:
18An optional company name []:
19cp server.key server.key.org
20openssl rsa -in server.key.org -out server.key # strip passphrase
21Enter pass phrase for server.key.org:
22writing RSA key [...]
23Getting Private key
现在,我们准备用以下命令启动PEPS:
1sudo make run
步骤 3 – 首次登录
使用其 IP 地址连接到您的 Droplet 通过从您的浏览器访问 https://your_server_ip
,其中 your_server_ip
是您的 Droplet 的 IP 地址。
由于我们目前正在使用临时的SSL证书,您的浏览器会警告您该网站不安全。 无论如何接受它. 使用Chrome,点击 Advanced来继续。
在第一次运行时,你将被要求创建一个管理员密码. 选择任何你喜欢的,只要它的复杂性是足够的。
由于PEPS的端到端加密,管理员帐户可以创建和删除用户,但无法访问现有的加密用户数据。
一旦设置了您的管理员密码,将显示主要的PEPS界面。
接下来,让我们专注于正确设置域名和证书。
步骤4:设置您的域名
现在您的实例运行顺利,我们仍然需要正确设置域,这涉及使用真实的SSL证书,配置DNS等。
取决于您的域名提供商,要么使用自己的接口为您的域设置 DNS 条目,要么设置自己的 DNS 服务器. 如果您想设置自己的 DNS 服务器,您可以使用 How To Configure BIND as a Private Network DNS Server on Ubuntu 14.04]文章,这是 An Introduction to Managing DNS文章系列的一部分。
例如,对于在mail.example.com
托管的虚构example.com
域:
1mail.example.com. 10799 IN A your_server_ip
2mail.example.com. 10799 IN MX example.com.
您的Droplet名稱應該是「mail.example.com」。 不要擔心. 您可以從您的DigitalOcean帳戶重新命名Droplet。 點一下Droplet名稱以查看其細節,點一下「設定」頁面,然後點一下「重命名」頁面。 您可能需要等待DNS更新。
在线检查器 MXToolBox有助于验证您的域设置正确,并在几个方面提供建议。
请注意,DNS传播可能有点慢,但过了一段时间(通常为1小时)后,您将能够从https://example.com
获取PEPS。
<$>[注] 注: 完成配置 PEPS 后,如果无法从外部域发送或接收电子邮件,请双重检查 A 和 MX 记录。
第5步:设置SSL证书
您仍将收到您浏览器的无效 SSL 证书警告。
如果你还没有SSL证书,你可以从提供商那里购买它们,甚至可以为非商业目的(https://andsky.com/tech/tutorials/how-to-set-up-apache-with-a-free-signed-ssl-certificate-on-a-vps)设置免费SSL证书。
如何从商业证书管理机构安装SSL证书文章解释了SSL证书的一切,包括如何购买。
请确保将名为server.key
和server.crt
的密钥和证书都复制到/etc/peps/
目录中。
在本地计算机上准备它们,并将文件复制到您的服务器,从包含证书的目录运行:
1scp server.key server.crt your_server_ip:/etc/peps/
其中「your_server_ip」是您的 Droplet 的 IP 地址。
完成后,请检查您的浏览器是否可以访问https://example.com
没有SSL错误。
步骤6:测试
要创建更多用户,请登录为管理员用户,使用用户名admin
和您在 _Step 3: 首次登录中创建的密码。
首先,尝试在您的域内两个不同的用户之间发送和接收电子邮件. 例如,尝试从 [email protected] 发送电子邮件到 [email protected]. 如果成功,尝试让 sammy 回复管理员,以确保逆转操作成功。
现在,向您域外的帐户发送电子邮件. 如果此操作失败,则您的 A 和 MX 记录尚未正确配置. 返回 Step 4: Set Up Your Domain。
结论
恭喜您! 您现在有一个在DigitalOcean Droplet上运行的PEPS实例,您可以安全地发送消息,共享文件和更多(通过运行插件,如 聊天)。
有几个手册可用:
- 用户手册
- 管理手册
- 更多文档可用于希望使用 PEPS API 的开发者或对备份的运营商,更多文档可从 GitHub 上的项目维基找到(https://github.com/MLstate/PEPS/wiki)。
此外,请访问PEPS Facebook页面(https://facebook.com/endtoend)以获取有关PEPS的最新消息。