1. 程式人生 > >MongoDB安全實戰之SSL協議加密

MongoDB安全實戰之SSL協議加密

鄧開表同學實戰MongoDB系列文章,非常不錯,贊!大力推薦!

本文主要講述MongoDB的SSL協議加密的使用和配置的實戰經驗,非常值得一看。

前面系列文章:

1

1、前言

加密就是將普通文字——所謂“明文”——轉變為無法直接閱讀的形式——所謂“密文”的過程。而要實現加密,以下兩者缺一不可:加密演算法和加密金鑰(key)。抽象地說,加密的過程就是以明文作為加密演算法的輸入,同時結合預先設定的金鑰,輸出所期待的密文。

2

2 傳輸層加密

MongoDB支援TLS/SSL(傳輸層安全性/安全套接字層)協議加密所有的MongoDB的網路通訊。TLS/SSL確保了MongoDB的網路通訊僅可讀由預定的客戶端。

2.1

2.1 TLS/SSL協議

在今天SSL協議上,公開金鑰和對稱金鑰加密結合使用。SSL是Internet上資料安全傳輸事實上的標準加密機制。MongoDB使用OpenSSL庫來實現TLS/SSL協議加密。MongoDB的SSL加密,只允許使用強大的SSL密碼至少128位金鑰長度對應所有連線。

2.2

2.2 證書

證書頒發機構

在生產環境下,MongoDB應使用有效證書的生成和由一個單一的認證機構簽名。

生成pem檔案

在使用SSL之前,必須有一個包含公鑰證書及其相關私鑰的PEM檔案。

MongoDB可以使用任何有效的SSL證書由證書頒發機構頒發的證書或自簽名證書。如果使用自簽名證書,雖然通訊通道將被加密,但是不會驗證伺服器標識。雖然這種情況會阻止竊聽的連線,它會讓容易受到中間人攻擊。使用由受信任的證書頒發機構簽署的證書將允許MongoDB驅動驗證伺服器的身份。

2.2.1 生成ca.pem及privkey.pem檔案

cd /etc/ssl

openssl req -out ca.pem -new -x509 -days 3650 -subj “/C=CN/ST=/BeiJing/O=bigdata/CN=root/[email protected]

2.2.2生成服務端PEM檔案:

1) 使用RSA加密演算法生成一個服務端私鑰檔案

openssl genrsa -out server.key 2048

2) 根據金鑰檔案生成一個證書申請檔案

openssl req -key server.key -new -out server.req -subj “/C=CN/ST=BeiJing/O=bigdata/CN=server1/CN=localhost/

[email protected]

3) 根據證書申請檔案生成CA的服務端證書檔案

openssl x509 -req -in server.req -CA ca.pem -CAkey privkey.pem -CAserial file.srl -out server.crt -days 3650

640?wx_fmt=png

4) 合併證書和私鑰成PEM檔案

cat server.key server.crt > server.pem

5) 驗證服務端證書

Openssl verify -CAfile ca.pem server.pem

640?wx_fmt=png

2.2.3 生成客戶端PEM檔案:

1) 使用RSA加密演算法生成一個客戶端私鑰檔案

openssl genrsa -out client.key 2048

2) 根據金鑰檔案生成一個證書申請檔案

openssl req -key client.key -new -out client.req -subj "/C=CN/ST=BeiJing/O=bigdata/CN=client1/[email protected]"

3) 根據證書申請檔案生成CA的客戶端證書檔案

openssl x509 -req -in client.req -CA ca.pem -CAkey privkey.pem -CAserial file.srl -out client.crt -days 3650

4) 合併證書及私鑰檔案成PEM檔案

cat client.key client.crt > client.pem

5) 驗證客戶端證書

openssl verify -CAfile ca.pem client.pem

640?wx_fmt=png

3

3 設定mongod服務的SSL支援

在MongoDB部署使用SSL時,需要配置以下啟動項:

·--sslMode 設定成requiressl。此設定限制每個伺服器只使用SSL加密連線。你也可以指定的值allowssl或preferssl建立混合模式使用SSL埠。

·--sslPEMKeyFile 使用包含SSL證書和金鑰的PEM檔案。

語法格式:

mongod --sslMode requireSSL --sslPEMKeyFile /etc/ssl/mongodb.pem

或者,在配置檔案中新增以下配置:

net:

   ssl:

     mode: requireSSL

     PEMKeyFile: /etc/ssl/mongodb.pem

連線mongod服務和mongos路由伺服器使用SSL,Mongo shell和MongoDB的工具必須包括SSL選項。

640?wx_fmt=png

4

4 啟動mongod服務並連線mongo shell

mongod --config=/etc/mongod.conf

mongo --ssl --host localhost --sslPEMKeyFile /etc/ssl/client.pem --sslCAFile /etc/ssl/ca.pem

640?wx_fmt=png

上面可以看到,mongo shell連線時,如果不帶任何選項,則報了network error網路錯誤。這說明MongoDB的客戶端的網路通訊被阻止了。

猜你喜歡

加入技術討論群

《大資料和雲端計算技術》社群群人數已經2500+,歡迎大家加下面助手微信,拉大家進群,自由交流。

640?wx_fmt=jpeg

喜歡釘釘掃碼下面的群:

640?wx_fmt=jpeg

喜歡QQ群的,可以掃描下面二維碼:

640?wx_fmt=jpeg

歡迎大家通過二維碼打賞支援技術社群(英雄請留名,社群感謝您,打賞次數超過55+):

640?wx_fmt=jpeg

相關推薦

MongoDB安全實戰SSL協議加密

鄧開表同學實戰MongoDB系列文章,非常不錯,贊!大力推薦!本文主要講述MongoDB的SSL

MongoDB安全實戰Kerberos認證

鄧開表同學MongoDB系列文章,本文主要講訴MongoDB的Kerberos配置實戰。Mong

WIFI安全測試WPS(PIN)加密暴力破解

前言 無線AP的接入驗證有很多種方式,家用無線路由器的驗證方式包括OPEN,WEP,WPA,WPA2,WPS的出現降低了接入驗證的複雜度,但是這種方式卻隱含帶來許多問題。 同時由於很早就入手了第一批WIFI安全測試資料,一直沒有機會進行實踐,老的本子正好可以

http抓包實戰http協議初始、fiddler初始

wid window 超文本傳輸協議 輸出 技術 服務 英文 捕獲 通過 1、什麽是http協議? HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本

linux安全加密SSL\TLS協議、CA、openssl的概述和使用

http://blog.51cto.com/6638225/1855174 內容: 1、通訊加密型別及演算法 2、TLS/SSL協議的引入及其通訊過程 3、CA、數字簽名的引入 4、一個安全的資料通訊交換過程 5、opens

網路安全 (非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS及其他)

對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS等這些安全領域內的技術進行一

【網絡與系統安全】關於SSL/TSL協議的分析

不知道 所有 前言 mar 2-2 tls協議 系統安全 描述 ssl3 前言 TSL協議的前身是由網景(Netscape)公司於1994年研發的安全套接字(Secure Socket Layer)協議。它建立在TCP協議棧的傳輸層,用於保護面向連接的TCP通信。實際TSL

系統安全數據加密解密

數據加密解密1.為什麽要進行數據加密? 若不對數據加密,難免在進程間通信時,會有第三者竊聽甚至修改通信數據;因此為了更好的確保數據的機密性,完整性,需要對數據加密。2.加密方案組成 加密算法及協議 加密密鑰3.常用的數據加密算法 1.對稱加密算法: 特點:加密密鑰和解密密鑰相

Python爬蟲queue線程安全實戰

xpath nbsp lose list 異步 thread 取圖 producer 是否為空 1.普通下載 import requests import os import re from lxml import etree from urllib import re

open-falcon使用mail-provider發郵件(支持smtp SSL協議

ans 服務器 有一個 code var clone 安裝 安裝mail 端口 一、首先確定go語言安裝環境配置好 1.進入官網下載源碼包 https://golang.org/dl/ 2.解壓縮,配置環境變量 在/etc/profile最後加上export PAT

App安全登入密碼、通訊加密方法(MD5,Base64,RSA,AES)

今天研究了一下關於登入密碼加密的問題,下面來說說實現。 一、RSA非對稱加密: 具體流程如下:擷取自http://blog.csdn.net/m372897500/article/details/50905017 客戶端向伺服器第一次發起登入請求(不傳輸使用者名稱和密碼)。

藍芽協議分析(11)_BLE安全機制SM

1. 前言 注1:此SM是Security Manager的縮寫,非彼SM,大家不要理解歪了! 書接上文,我們在中介紹了BLE安全機制中的終極武器----資料加密。不過使用這把武器有個前提,那就是雙方要共同擁有一個加密key(LTK,Long Term Key)。這個

spring實戰坑:配置MongoDB出錯org.springframework.web.context.ContextLoader.initWebApplicationContext Conte

org.springframework.web.context.ContextLoader.initWebApplicationContext Context initialization failedjava.lang.BootstrapMethodError: java.

TLS/SSL 協議詳解 (20)加密套件的選擇

伺服器在選擇演算法時,會有優先順序,是以客戶端提供的的為最優,還是伺服器端配置的為最優。所謂的客戶端最優,就是根據客戶端提供的加密套件,從上到下,看是否有本地支援的,有的話則使用。所謂伺服器端最優,就是伺服器端根據自身配置的加密套件順序,一個個在client hello中找,

Raft協議實戰Redis Sentinel的選舉Leader原始碼解析

http://www.blogjava.net/jinfeng_wang/archive/2016/12/14/432108.html Raft協議是用來解決分散式系統一致性問題的協議,在很長一段時間,Paxos被認為是解決分散式系統一致性的代名詞。但是Paxos難於

【android安全使用ssl驗證保護網路資料傳輸安全

package com.test; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.i

藍芽協議分析(8)_BLE安全機制白名單

前言 在萬物聯網的時代,安全問題將會受到非常嚴峻的挑戰(相應地,也會獲得最大的關注度),因為我們身邊的每一個IOT裝置,都是一個處於封印狀態的天眼,隨時都有被開啟的危險。想想下面的場景吧: 凌晨2點,x米手環的鬧鐘意外啟動,將你從睡夢中驚醒,然後床頭的燈光忽明忽暗……

藍芽協議分析(9)_BLE安全機制LL Privacy

前言 在上一篇文章[1]中,我們介紹了BLE的白名單機制,這是一種通過地址進行簡單的訪問控制的安全機制。同時我們也提到了,這種安全機制只防君子,不防小人,試想這樣一種場景: A裝置表示只信任B、C、D裝置,因此就把它們的地址加入到了自己的白名單中,表示只願意和它們溝通。與此

Web攻防業務安全實戰指南 Web安全漏洞分析技術教程書籍 電商銀行金融證券保險遊戲社交

理論篇 第1章 網路安全法律法規 2 中華人民共和國網路安全法 目 錄 第一章 總則 第二章 網路安全支援與促進 第三章 網路執行安全 第一節 一般規定 第二節 關鍵資訊基礎設施的執行安全 第四章 網路資訊保安 第五章 監

資料庫安全TDE列加密

TDE - 基於列的加密 由於有了Oracle的TDE-基於列的加密,你所要做的只是定義需要加密的列,Oracle將為包含加密列的表建立一個私密的安全加密金鑰,然後採用你指定的加密演算法加密指定列的明文資料。  這個加密,不需要我們寫特殊的程式碼,只要我們制定“需要加密的列”,當用戶插入下一行資料的時候