繁体   English   中英

安全复制的分步说明?

Step by step instruction for secure replication?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

不确定问题是否应该在ServerFault上

我在我的服务器上使用Apache凭据进行了一个couchDB设置(但如果分散注意力,我可以关闭它)。
我在各种笔记本电脑上都有本地实例。 现在我想设置安全(连续)复制。 根据我的理解,我可以使用用户名/密码,SSL证书或OAuth。 我发现了一些信息:

所有这些文件都增添了预感,但也让人感到困惑(我只是一个简单的想法 )。

我正在寻找的是一步一步的指导:

  • 适用于OAuth或SSL证书的Pro和con(可选讨论)
  • 设置SSL组件的步骤澄清 :我不是在寻找SSL传输安全性 - 对于Apache HTTP和CouchDB来说,这并不是很复杂并且记录得很好。 我正在寻找的是使用证书进行身份验证 ,类似于您在SSH中可以执行的操作。 我在OAuth中看到的潜在问题:管理员可以完全访问凭据(?)。 使用证书方法,他不能冒充用户,因为私钥不受管理员控制。
  • 设置OAuth的步骤
  • 每个用户的示例复制文档使用具有一些文档的本地副本并共享一个oneline

我在哪里可以找到它?

1 个回复

安全传输用户凭据是一个非常棘手的问题。

如果我们不想第三方,在大多数情况下,SSL是更好的开始方式,因为它可能会被您使用的每个工具广泛支持。 SSL证书,不仅提供加密(甚至是自签名的加密),还提供用户请求正确资源的保险。 如果您关心服务器安全性,最后一个选项也值得强调。 SSL使用的主要缺点是性能下降(因使用的算法而异),因为服务器必须解密数据,并且除了常见的通信例程之外,客户端还需要验证证书。 此外,你必须为可靠的证书支付一些钱( 并非总是如此 )。

使用OAuth可以不泄露真实的用户凭据,并且可以轻松地从服务器端维护其访问控制。 此外,您需要一些能够正确处理OAuth 1.0规范的库,如果您的平台错过了 - 您必须自己实现它。 另外OAuth提供传输数据签名,因此它旨在为MiTM案例提供安全保障。 这实际上就是他所做的一切。

如您所知,SSL和OAuth有两个不同的东西:SSL有助于在传输级别(TLS)上加密数据,而OAuth会在非安全环境中处理凭据泄露。 它们不是彼此的替代品,但是它们中的每一个都可以替代其他的。

要为CouchDB设置SSL支持,请按照文档指南进行操作 这很简单易行。 请注意,如果CouchDB前面有一些代理服务器,那么为他设置SSL并通过常规HTTP协议将代理数据代理到本地CouchDB实例可能是明智之举。

要设置OAuth,需要执行以下步骤:0。确保{couch_httpd_oauth, oauth_authentication_handler} [httpd]部分的authentication_handlers选项的{couch_httpd_oauth, oauth_authentication_handler}处理程序存在于default.ini配置文件中:

[httpd] authentication_handlers = {couch_httpd_oauth,oauth_authentication_handler},{couch_httpd_auth,cookie_authentication_handler},{couch_httpd_auth,default_authentication_handler}

之后,您需要以下一种方式编辑local.ini文件:

  1. 设置消费者秘密:
[oauth_consumer_secrets] 
example.org = sekr1t
  1. 设置令牌机密:
[oauth_token_secrets] 
token1 = tokensekr1t
  1. 将令牌映射到已存在的CouchDB用户:
[oauth_token_users] 
token1 = joe

就这样! 如果您有CouchDB 1.2或更高版本,您还可以在_users数据库中的用户文档中定义OAuth凭据:

{
    "_id": "org.couchdb.user:joe",
    "type": "user",
    "name": "joe",
    "password_sha": "fe95df1ca59a9b567bdca5cbaf8412abd6e06121",
    "salt": "4e170ffeb6f34daecfd814dfb4001a73"
    "roles": ["foo", "bar"],
    "oauth": {
        "consumer_keys": {
            "example.org": "sekr1t",
            "consumerKey2": "key2Secret"
        },
        "tokens": {
            "token1": "tokensekr1t",
            "token2": "token2Secret"
       }
    }
}

现在,当我们为用户joe设置OAuth凭据时,让我们开始复制。 要让CouchDB使用OAuth凭据,我们需要扩展sourcetarget字段,具体取决于哪一方将授权我们的用户:

{
    "source": "mailbox",
    "target": {
        "url": "https://secure.example.org/mailbox",
        "auth": {
            "oauth": {
                "consumer_secret": "sekr1t", 
                "consumer_key": "example.org", 
                "token_secret": "tokensekr1t", 
                "token": "token1" 
            }
        } 
    } 
}

并将此数据POST_replicate资源或为_replicator数据库创建文档。 复制将使用SSL协议加密从本地服务器启动到远程secure.example.org ,所有操作都将通过登录joe进行远程用户操作。

总结:SSL和OAuth的组合不仅可以保护传输的数据(不仅是用户凭证),还可以保证目标服务器不是伪造的,还可以保护真实用户登录名和密码免于意外泄露,控制消费者来源(例如,如果example.org将被泄露,我们只能删除他的消费者令牌,但不能强迫用户更改他的密码)并签署针对MiTM攻击的额外保护请求。

更新 :对于您的情况,常规SSL证书例程是可以的:您需要创建自己签名的个人证书,并让客户设置以便与CouchDB进一步协作。 CouchDB方面唯一需要的是在处理连接之前验证证书。 但请注意,自定义个人SSL证书安装可能并非易事,特别是对于移动客户端。

对于OAuth方面,CouchDB 可能会使用RSA-SHA1身份验证方法,该方法使用某种个人证书进行保密。 但是,您需要首先修补源以解锁此方法 - 默认情况下禁用它。

2 使用 GDB 的步骤数指令

si是第 1 步指令,如何使用 1 个 GDB 命令移动几步? 例如,我想在地址 0xabcd 之后跳过 3 条指令 但这只跳过 1 条指令,而不是 3 条 ...

3 分步说明以运行脱机OpenStreetMaps

我正在尝试在服务器上运行OpenStreetMaps的脱机版本。 我有一个显示OSM映射的ASP.NET MVC应用程序。 到目前为止,我运行了OpenLayers的快速入门示例。 问题是我需要离线所有内容。 我已经下载了planet-latest.osm.bz2文件,但是我对 ...

4 如何制作Android逐步互动教学

这可能是一个模糊的问题,但这是我真的很想知道。 我们开发了一个android应用程序,并且希望在首次使用该应用程序时添加交互式说明。 您如何称呼大多数android应用程序今天具有的帮助/指令的交互? 可以使用android studio完成吗? 感谢您的回复。 ...

2015-07-07 08:37:48 2 113   android
5 在cmd中重定向端口的分步说明

我正在尝试在android中做我的第一个超级简单的聊天应用程序。 我正在尝试遵循本教程[1]: http : //www.edumobile.org/android/android-development/socket-programming/ 我按照描述进行了所有操作,但是在第5点 ...

6 迦太基支持的完整分步说明

我正在寻找逐步教程,以实现对自己的库的迦太基支持。 由于迦太基的工作方式不同于Cocoapods,所以我对整合提出了一些疑问。 当我得到的步骤是下一步: 在仓库的根目录中创建一个名为lib的Xcode项目。 将所有源文件(没有示例文件)包括到您的项目中。 共享Xco ...

7 执行指令后(获取步骤)

因此,对于任何指令,在单个总线CPU中: MAR <-PC,读取,PC ++,Tacc,MDR <-总线,IR <-MDR CPU将PC的内容发送到MAR,并在地址总线上发送读取命令。 PC递增,以便指向下一条指令。 此步骤为下一个周期准备CPU。 ...

8 逐步完成Geany中的每条指令

使用Geany IDE,是否有可能在运行每条指令时逐步执行功能中的每条指令? 我知道许多IDE(包括Eclipse和Visual Studio)都具有此功能,但是我还没有在Geany中找到它。 ...

9 scipy.ndimage.convolve的理论和逐步指导

祝大家有美好的一天。 请帮助我了解一维数组的函数scipy.ndimage.convolve理论。 我知道来自http://lagrange.univ-lyon1.fr/docs/scipy/0.17.1/genic/scipy.ndimage.convolve.html的公式 ...

10 使用 Msys2 为 mingw 安装 Rust 和 Cargo 的分步说明?

我尝试在 Cygwin 上安装 Rust,但无法与 mingw 链接。 现在我正在尝试用 Msys2 安装它。 我已经安装了 Msys2 和 Mingw。 我试图关注这个维基页面,但我在第 2 处迷路了: 使用安装程序下载并安装 Rust+Cargo,但一定要禁用链接器和平台库选项。 它是 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM