1. 程式人生 > >SpringCloud-分散式配置中心【加密-非對稱加密】

SpringCloud-分散式配置中心【加密-非對稱加密】

案例程式碼:https://github.com/q279583842q/springcloud-e-book

非對稱加密

一、什麼是非對稱加密(Asymmetric encryption)

二、Java-keytool 使用說明

  非對稱加密我們需要生成對應的公鑰和私鑰,jdk中提供的有java-keytool工具幫助我們生成,執行如下命令:

keytool -genkeypair -alias "config-info" -keyalg "RSA" -keystore c:\tools\encryp-info.keystore

三、建立服務專案

1.建立專案

  建立一個SpringCloud專案

2.pom檔案

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.13.RELEASE</version>
    </parent>
    <groupId>com.bobo</groupId>
    <artifactId>config-server-encryption-SRA</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3.配置檔案

spring.application.name=config-server-encryption-SRA
server.port=9060
#設定服務註冊中心地址,指向另一個註冊中心
eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/

#Git 配置
spring.cloud.config.server.git.uri=https://gitee.com/dengpbs/config
#spring.cloud.config.server.git.username=
#spring.cloud.config.server.git.password=

#keytool -genkeypair -alias "config-info" -keyalg "RSA" -keystore c:\tools\encryp-info.keystore
# keystore 檔案的路徑
encrypt.key-store.location=classpath:encryp-info.keystore
# alias 指定金鑰對的別名,該別名是公開的;
encrypt.key-store.alias=config-info
# storepass 金鑰倉庫
encrypt.key-store.password=123456
# keypass 用來保護所生成金鑰對中的私鑰
encrypt.key-store.secret=123456

將生成的keystore檔案拷貝到classpath目錄下

4.啟動測試

測試加密狀態:http://localhost:9060/encrypt/status

加密

public class Test1 {

    /**
     * 通過RestTemplate來加密資料
     * @param args
     */
    public static void main(String[] args) {
        String url = "http://127.0.0.1:9060/encrypt";
        RestTemplate template = new RestTemplate();
        ResponseEntity<String> msg = template.postForEntity(url, "123456", String.class);
        System.out.println(msg.getBody());
    }

}

四、建立客戶端專案

1.建立專案

  拷貝上個案例的客戶端程式。

2.pom檔案

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.13.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bobo</groupId>
    <artifactId>config-e-book-product-provider-sra</artifactId>
    <version>0.0.1-SNAPSHOT</version>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>com.bobo</groupId>
            <artifactId>e-book-product-service</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3.bootstrap檔案

spring.application.name=config-e-book-product-provider-sra
server.port=9001
#\u8BBE\u7F6E\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740\uFF0C\u6307\u5411\u53E6\u4E00\u4E2A\u6CE8\u518C\u4E2D\u5FC3
eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/

#配置中心服務端的連結資訊
#預設 false,這裡設定 true,表示開啟讀取配置中心的配置
spring.cloud.config.discovery.enabled=true
#對應 eureka 中的配置中心 serviceId,預設是 configserver
spring.cloud.config.discovery.serviceId=config-server-encryption-SRA
#git 標籤
spring.cloud.config.label=master

4.倉庫檔案

  在git中建立config-e-book-product-provider-sra.properties檔案

#--------------db----------------
mybatis.type-aliases-package=com.book.product.pojo
mybatis.mapper-locations=classpath:com/bobo/product/mapper/*.xml

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/book-product?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
spring.datasource.username={cipher}AQBTQaUuvTsXQ9Y4tr9Vq5BrEASk7ItrtNsQemtjgMd8anL5bMeo+NJVJ2kEKOzEdITiEGAguUTs78I9XGBZNI2DaNcySNjmKIi6NRX9ury1Fd9tGzT4ViZyNf2IcaUhwb7Yx0HBiHAyOxVDB1wStCUTUj3sD7/MZxw3VQeUMueti4j7giyHg2xGnKW1NnKNxKjpiUKY1uz3Ag2DZwdLQnAvmm90Y290HNNMDzq8ROrHbxXmyGCAlpmHXWloLZ0r7eBNkLvG7Hnnx9vDmWWyiRxSPiJo2UszmnKf5vN8hQZYIU83AjXMkOGolpPkOhg4nsoQS9++oF/AYGGydthxmuI9zsX8L6JXWBioo72yAXX8sw7doAp71ABuv2ivwd8njo8=
spring.datasource.password={cipher}AQBZKEptQk2RBf+3DJ1tlHbmFKiuNtjwIbq8qf1kjIkkteYmxcrTfPmO5DYFuRd/xsVlKAfK+pfsn1nPntBjqMQYPvDPMy7LkcYe/gA4Q8/9d97Fn8o0TRv3VcYLvnPbn77S3CWBG/80LngQjLSbpShrUJdf7saC1ksBFDTmLMjlClJudIv3SpzkEVWZ8gc/UJoJSCHT/p3IAIxIGG6zQwYxv04tHYzMV+mxy5bgg6G6K+tQ9RShd0KkedtJHKTWaF3fJWfQHgy4eK5+d4UCinUso0pQg+kQpEgcszgK4+2jOnmf5O0OYzlzUkdAhYvqHFvi6qzQSh63KRTvkxAXSWZK6H8ku11Il3zJzNkiaJTK4bIFDKjV4ZSUbluzNxA946M=

5.測試

  啟動服務端和客戶端訪問。

相關推薦

SpringCloud-分散式配置中心加密-對稱加密

案例程式碼:https://github.com/q279583842q/springcloud-e-book 非對稱加密 一、什麼是非對稱加密(Asymmetric encryption) 二、Java-keytool 使用說明   非對稱加密我們需要生成對應的公鑰和私鑰,jdk中提供的有java-

springcloud(三):配置中心(Config)對稱加密

概述從配置獲取的配置預設是明文的,有些像資料來源這樣的配置需要加密的話,需要對配置中心進行加密處理。下面使用對稱性加密來加密配置,需要配置一個金鑰,當然也可以使用RSA非對稱性加密,但對稱加密比較方便也夠用了,這裡就以對稱加密來配置即可。如何引入config encrypt

SpringCloud入門 - SpringCloudConfig分散式配置中心搭建服務端和客戶端

前言:微服務架構中,每個專案都有一個yml配置,管理起來麻煩。可以使用spring cloud config來統一管理  Spring Cloud Config是什麼?       在分散式系統中,由於服務數量巨多,為了

springCloud分散式配置中心,configserver端的配置檔名是application.properties,但是configclient端的配置檔名不一樣

問題:如果configclient端的配置檔名也是叫application.properties時,專案啟動時,會報錯,無法讀取Value("${name}")中的值。 原因:服務啟動的時候,首先需要從配置中心獲取一些配置(如本專案中的Value("${name}")中的這個name值,是配置中

springcloud 分散式配置中心(spring cloud config)

官方中文文件:https://springcloud.cc/spring-cloud-config.html 條件:每次修改配置,都需要去找相應的配置檔案,造成了不必要的開銷,現在我們可以在遠端Git上修改,然後修改相應的服務 1.現在碼雲上建立一個私有專案config-repo

SpringCloud——分散式配置中心(Spring Cloud Config)

一、Spring Cloud Config簡介           Spring Cloud Config為分散式系統中的外部配置提供伺服器和客戶端支援。使用Config Server,您可以在所有環境中管理應用程式的外部屬性。客戶端和伺服器上的概念對映與Spring En

SpringCloud分散式配置中心淺談

一、什麼是分散式配置中心? Spring Cloud Config為服務端和客戶端提供了分散式系統的外部化配置支援。配置伺服器為各應用的所有環境提供了一箇中心化的外部配置。它實現了對服務端和客戶端對Spring Environment和PropertySource抽象的對映,所以它除了適用於

SpringCloud-----分散式配置中心

1、為什麼要把配置做成服務? 假如:在每個工程中都做配置檔案,配置項,那如果要修改的話,那相應的工程都需要重新打包,重啟。 反之:如果放在配置中,配置發生變更的話,只需要重啟相關的服務,更不需要打包 2、什麼是配置中心 在分散式系統中,由於服務數量巨多,為了方便服務配

springcloud分散式配置中心

一共三個部分   一、註冊中心 配置檔案:application.yml ###服務啟動埠號 s

[svc]對稱加密/對稱加密細枝末節-如何做到數據傳輸的authentication/data integrity/confidentiality(私密)

ecc 數據完整性 安全 post 數字簽名 .html 模式 數字證書 大量 對稱/非對稱/混合加密的冷知識 數據在互聯網上傳輸,要考慮安全性. 講到安全,要從三方面考慮: 1、authentication 每一個IP包的認證,確保合法源的數據 2、data integ

什麼是非對稱加密?對稱加密概念

什麼是非對稱加密 對稱加密演算法在加密和解密時使用的是同一個祕鑰;而非對稱加密演算法需要兩個金鑰來進行加密和解密,這兩個祕鑰是公開金鑰(public key,簡稱公鑰)和私有金鑰(private key,簡稱私鑰)   與對稱加密演算法不同,非對稱加密演算法需要兩個金鑰:

JAVA實現RSA加密,對稱加密演算法

RSA.java package org.icesnow.jeasywx.util.security; import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair;

對稱加密 對稱加密 不可逆加密演算法

根據金鑰型別不同可以將現代密碼技術分為兩類:對稱加密演算法(私鑰密碼體系)和非對稱加密演算法(公鑰密碼體系)。 1 對稱加密演算法中,資料加密和解密採用的都是同一個金鑰,因而其安全性依賴於所持有金鑰的安全性。 對稱加密演算法的主要優點是加密和解密速度快,加密強度高,且演算法公開. 缺點是實現金鑰的祕密分發困

[svc]openssl對稱加密,對稱加密最佳實戰

 OpenSSL進行aes加密解密-對稱加密 建立檔案test.txt, 特意寫入中英文 # cd /tmp # echo "test測試" > test.txt 開始加密, 使用aes-128-cbc演算法, 也可以使用其他演算法

理論:HTTPS,TLS,SSL,TCP,UDP,對稱加密,對稱加密

HTTP:傳輸web內容的協議,軟水管(公開透明) TLS/SSL:不鏽鋼管 HTTPS:HTTP套上SSL,軟水管套上不鏽鋼管 TCP:傳輸層協議,HTTP基於TCP,面向連線 UDP:傳輸層協議,先傳不一定先到,面向非連線 對稱加密:加密和解密使用

對稱加密/對稱加密/簽名演算法

對稱加密: 對稱加密是指,加密方和解密方使用同樣的祕鑰來進行加密和解密。 常用對稱加密: 1. DES演算法 DES演算法的入口引數有三個:Key、Data、Mode。其中Key為8個位元組共64位,是DES演算法的工作金鑰;Data也為8個位元組64位,是要被加密或被

資料傳輸加密——對稱加密演算法RSA+對稱演算法AES(適用於java,android和Web)

本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 資料傳輸加密   在開發應用過程中,客戶端與服務端經常需要進行資料傳輸,涉及到重要隱私資訊時,開發者自然會想到對其進行加密,即使傳輸過程中被“有心人”擷取,也不會將資訊洩露。對於加密

數字摘要,對稱加密,對稱加密,數字簽名,數字證書

數字摘要 數字摘要也稱訊息摘要,由一個單向hash函式對一段訊息進行計算產生,不同的明文生成的密文總是不同的,而同樣的明文的密文一定相同。 訊息摘要能夠驗證訊息的完整性:如果訊息在傳遞的途

軟考之數字簽名 對稱加密 對稱加密

/*如有不對 概不負責*/   首先 對稱加密:是指加密解密使用的金鑰都是一樣的,對稱加密也稱為 私鑰密碼體制。大概在實際生活中就是 你有一個訊息要發給一個人類,你用對稱加密後發給他,然後你們事先肯定得約定好這個金鑰是什麼,然後他就用這個金鑰解開。這個金鑰肯定不能公開,所以

Java進階 八 Java加密技術之對稱加密 對稱加密 不可逆加密算法

歐洲 再次 div 數據安全 識別 交易 standard 計算 領域 對稱加密 非對稱加密 不可逆加密算法 根據密鑰類型不同可以將現代密碼技術分為兩類:對稱加密算法(私鑰密碼體系)和非對稱加密算法(公鑰密碼體系)。 1 對稱加密算法 原理 對稱加密算法中,數據