2016-11-23 7 views
4

У меня есть простой проект с использованием Spring Cloud Config Server, и я пытаюсь просто шифровать и расшифровывать некоторые значения. Я создаю проект как проект Spring Starter, используя следующий pom.xml с Spring Boot.Spring Cloud Config Симметричный ключ

pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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> 

    <groupId>com.oreilly.cloud</groupId> 
    <artifactId>spring-microservices-config-server6</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>spring-microservices-config-server6</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.2.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

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

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework.cloud</groupId> 
       <artifactId>spring-cloud-dependencies</artifactId> 
       <version>Camden.SR2</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> 

Оттуда я изменить основной класс Spring загрузки приложений, чтобы добавить @EnableConfigServer аннотацию следующим образом:

@SpringBootApplication 
@EnableConfigServer 
public class SpringMicroservicesConfigServer6Application { 

    public static void main(String[] args) { 
     SpringApplication.run(SpringMicroservicesConfigServer6Application.class, args); 
    } 
} 

В пределах моего файла application.properties, я указываю в репозиторий git, настройте порт сервера и включите симметричное шифрование ключей, используя encrypt.key следующим образом:

server.port=8888 
spring.cloud.config.server.git.uri=C:/Users/training/Desktop/sts-workspace/configuration 
encrypt.key=secret 

Следующая открыть Баш оболочку и шифровать некоторые данные:

$ curl http://localhost:8888/encrypt -d Kevin 

Который производит значение:

`315ca5592635e4f65e0a0278cd08f74b5cef27e8379bd0e0d81d08c9ed8fbac161d` 

Если я пытаюсь расшифровать значение с помощью:

$ curl localhost:8888/decrypt --data-urlencode 315ca5592635e4f65e0a0278cd08f74cef27e8379bd0e0d81d08c9ed8fbac161d 

Я получаю следующее сообщение об ошибке:

276description":"Text not encrypted with this key","status":"INVALID"} 

Я не понимаю, почему этот простой сценарий практически не работает из коробки. Существует очень минимальная конфигурация, требуемая вручную, и мне интересно, если это проблема с сервером конфигурации? Может ли кто-нибудь помочь?

+0

Вам нужно только '--data-urlencode', если есть специальные символы. Он работает, если я просто использую '-d'. – spencergibb

+0

На самом деле, мне не хватало '-',' --data-urlencode' тоже отлично работало для меня. – spencergibb

+0

@spencergibb ум, разделяющий ваш проект? Ни для меня не работает –

ответ

4

Я только что узнал, что происходит:

$ curl -X POST localhost:8888/encrypt -d FOO 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 67 100 64 100  3 4000 187 --:--:-- --:--:-- --:--:-- 4000e474cd78d6c18e0e5395e67a3bc0865a75077650e91d2249d460e91d6989ce87 

Я взял 4000e474cd78d6c18e0e5395e67a3bc0865a75077650e91d2249d460e91d6989ce87 как зашифрованный текст, и он не работает.

Проблема в том, что столбец текущей скорости находится прямо перед ответом, поэтому мы используем его, как если бы он был частью ответа.

Фактический шифруется текст, удалив текущую скорость: e474cd78d6c18e0e5395e67a3bc0865a75077650e91d2249d460e91d6989ce87

$ curl localhost:8888/decrypt -d e474cd78d6c18e0e5395e67a3bc0865a75077650e91d2249d460e91d6989ce87 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 67 100  3 100 64 187 4000 --:--:-- --:--:-- --:--:-- 4000FOO 
+0

У меня была такая же проблема! Я действительно поставил вопрос Гитуба. –