如何使用 DataStax Java 驱动程序设置 Cassandra 客户端到节点加密?

2024-03-31

我已在 Cassandra 集群上设置了节点到节点加密。现在我想设置客户端到节点。根据本文档 http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureSSLCertificates_t.html,它应该像获取客户端的 SSL 证书并将其导入每个节点的信任库一样简单。我还没有这样的证书,但这不是我的问题。

由于我的客户端使用的是 DataStax Java 驱动程序,因此似乎为了从客户端启用 SSL,当我构建Cluster我应该使用withSSL() http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/Cluster.Builder.html#withSSL%28%29启用 SSL 的方法。好的,但是我还需要做什么?我对 JSSE 不熟悉,所以我不知道还需要什么。 SSL 通信是双向的,即驱动程序是否需要访问集群中每个节点的 SSL 证书?


  1. 创建证书 [1]。

  2. 在 cassandra.yaml 设置中启用客户端节点加密 [2]。

  3. 向您的客户端添加 SSL 支持。有一个很棒的 datastax 博客,其中包含用于在客户端中设置 SSL 连接的示例代码 [3]。

  4. 为您的客户提供的证书。据我所知,您似乎应该能够使用 [1] 中的相同密钥库和信任来供 java 客户端使用。根据 [4],我知道您需要一个 pcks12 样式的 PEM 文件才能使用 cqlsh。

此外,[4] 提供了客户端通过 SSL 连接到 cassandra 集群的简单示例。 [5] 是为集群节点和客户端创建证书的示例,值得一读。

  1. [6] 是我发现的创建证书的最佳示例。

注意:如果您希望使用企业级强度加密,则需要启用 Java 加密扩展。出于法律原因,附带的 java 仅支持相对较弱的加密。如果您尝试在未启用 JCE 的情况下使用 256 位加密,Cassandra 和您的客户可能会抱怨。这样做是为了客户端和服务器端机器:

  1. 下载http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
  2. 解压包
  3. 将两个策略 jar 复制到您的 JAVA_HOME 中,覆盖已有的两个 jar:

    [user@host UnlimitedJCEPolicy]$ ls local_policy.jar README.txt US_export_policy.jar [user@host UnlimitedJCEPolicy]$ export JAVA_HOME="$( readlink -f "$( which java )" | sed "s:bin/.*$::" )" [use@host UnlimitedJCEPolicy]$ echo $JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/ [user@host UnlimitedJCEPolicy]$ cp -v *.jar $JAVA_HOME/lib/security/

  4. 重新启动 cassandra 和客户端

[1] http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureSSLCertificates_t.html http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureSSLCertificates_t.html

[2] http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureSSLClientToNode_t.html http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureSSLClientToNode_t.html

[3] http://www.datastax.com/dev/blog/accessing-secure-dse-clusters-with-cql-native-protocol http://www.datastax.com/dev/blog/accessing-secure-dse-clusters-with-cql-native-protocol

[4] https://github.com/PatrickCallaghan/datastax-ssl-example https://github.com/PatrickCallaghan/datastax-ssl-example

[5] http://www.datastax.com/dev/blog/accessing-secure-dse-clusters-with-cql-native-protocol http://www.datastax.com/dev/blog/accessing-secure-dse-clusters-with-cql-native-protocol

[6] http://techdocs.acunu.com.s3.amazonaws.com/v5.0/admin/security/ssl.html http://techdocs.acunu.com.s3.amazonaws.com/v5.0/admin/security/ssl.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 DataStax Java 驱动程序设置 Cassandra 客户端到节点加密? 的相关文章

随机推荐

  • 什么是同步和异步方法?

    什么是同步方法 什么是异步方法 同步方法和异步方法有什么区别 什么时候必须使用同步或异步方法 我问这些问题是因为我不明白 public async void ReadData filepath CreateDoc hello lt Why
  • GWT Dev 模式和外部服务器出现间歇性序列化异常

    我有一个 GWT 应用程序 它在开发模式下与 GWT 的嵌入式码头服务器完美运行 但是 我需要转向使用外部码头服务器 出于各种原因 我遵循了 GWT 文档编译与调试 http www gwtproject org doc latest De
  • 致命错误:从无效上下文调用 private MyObject::__construct()

    在 PHP 中创建新对象时 我收到以下错误消息 Fatal error Call to private MyObject construct from invalid context我只是创建新对象 而不尝试显式调用构造函数 有谁知道发生了
  • 使用嵌入文本文件中的 File.ReadAllLines

    我一直在应用迄今为止在 Bob Tabors 绝对初学者系列中学到的知识 并为我女儿编写了一个小型控制台文字游戏 需要我生成一个随机的 5 个字母单词 我以前使用过File ReadAllLines path 从我的系统上的文本文件 wor
  • 如何限制谁可以在 github 存储库上合并为 master?

    我在我的 Github 存储库上进行了设置 主分支检查 激活 以下内容的分支保护规则 合并前需要审查请求请求 所需批准审稿人 1 包括管理员 限制谁可以推送到匹配的分支 然后我面临的情况是 团队中至少有一个人必须批准 PR 然后有人才能将自
  • 将Python源代码拆分到单独的目录中?

    以下是我的公司 foo com 使用的一些各种 Python 包 com foo bar web com foo bar lib com foo zig web com foo zig lib com foo zig lib lib1 co
  • 在函数内用 $ 索引数据框?

    许多 R 教科书鼓励使用 从 data frames 检索变量 列 但是 我发现这在函数内部不起作用 我不明白为什么 data BOD print BOD These work BOD demand BOD demand This work
  • 以特定格式将数据存储在txt文件中

    我的问题与我之前的问题相关 如何以特定格式显示txt文件中的数据 https stackoverflow com questions 731917 how to display data from txt file in specific
  • jQuery UI 选项卡禁用选项卡导航

    我尝试使用禁用选项卡导航 var tabs tabs tabs select function event ui return false 但是 这也会禁用我用于导航的流链接 input nexttab click function var
  • Form.ShowDialog() 并处置

    如果我有这样的方法 public void Show Form1 f new Form1 f ShowDialog 我还需要调用 dispose 吗即使它将超出范围 也将符合垃圾回收的条件 从一些测试来看 多次调用此 Show 在某些时候
  • Chrome 84 中缩小后的图像模糊

    最近一次 Google Chrome 更新后 我网站上的 Retina 图像变得模糊 它们仍然是视网膜图像 当我在新选项卡中打开图像时 它是双倍尺寸的图像 但由于某种原因 它们看起来模糊就像非视网膜图像一样 因此 图像的缩小算法似乎有问题
  • 从 R 中的 Facet_wrap ggplot2 中删除一个级别/组

    我的 tbl df gt str p2p dt SKILL A Classes tbl dt tbl data table and data frame 693 obs of 35 variables Patch Factor w 7 le
  • 使用 C# 中的 asp.net 表单登录屏幕抓取网站?

    是否可以为受表单登录保护的网站编写屏幕抓取程序 当然 我可以访问该网站 但我不知道如何登录该网站并在 C 中保存我的凭据 此外 任何 C 屏幕截图的好例子将不胜感激 这已经完成了吗 这很简单 您需要自定义登录 HttpPost 方法 你可以
  • Angular CLI 中未显示字体精美的图标:8.2.2 而是显示正方形

    我已经安装了 Font Awesome 通过npm install save font awesome angular font awesome from https www npmjs com package angular font a
  • Kotlin 中按多个字段对集合进行排序[重复]

    这个问题在这里已经有答案了 假设我有一个人员列表 我需要先按年龄排序 然后按姓名排序 来自 C 背景的我可以通过使用 LINQ 轻松地用所述语言实现此目的 var list new List
  • 使用“AsParallel()”/“Parallel.ForEach()”指南?

    寻求一些关于利用杠杆的建议AsParallel or Parallel ForEach 以加快速度 请参阅下面我得到的方法 此示例的简化 粗制化 它需要一个类似 美国 法国 亚太地区 的列表 其中 亚太地区 可能是其他 50 个 美国 法国
  • Python 版本识别错误

    我已经开始使用 pyqtdeploy 来使用 pyqt 并制作跨平台应用程序 不幸的是 当我实际尝试启动它时 我收到错误 启动器中的致命错误 无法使用 C Python34 python exe C Python34 pyqtdeploy
  • objectify-appengine - 嵌入式类 - 不是受支持的属性类型

    我正在谷歌应用程序引擎上尝试objectify 版本2 2 3 嵌入类示例 wiki 我收到此错误 java lang IllegalArgumentException one com mypkg LevelOne is not a sup
  • YUI 圆形输入框

    是否可以使用 YUI 将我的所有输入框更改为圆角 我无法使用背景图像 因为输入的宽度是可变的 并且我无法添加围绕它们的 div 因为生成了一些输入元素 另外 我不能使用边框半径或任何 moz webkit 变体 因为它需要在 IE6 中显示
  • 如何使用 DataStax Java 驱动程序设置 Cassandra 客户端到节点加密?

    我已在 Cassandra 集群上设置了节点到节点加密 现在我想设置客户端到节点 根据本文档 http www datastax com documentation cassandra 2 0 cassandra security secu