programing

jHipster 샘플 앱에 자체 서명된 SSL 인증서를 추가하는 방법

magicmemo 2023. 4. 1. 09:00
반응형

jHipster 샘플 앱에 자체 서명된 SSL 인증서를 추가하는 방법

샘플 jHipster 앱을 만들었습니다.이제 자체 서명된 SSL 인증서를 추가하고 https에 액세스할 수 있도록 로컬로 테스트합니다.어떻게 하면 좋을까요?

이러한 순서는 JHipster의 기반이 되는 모든 Spring Boot 애플리케이션에 적용할 수 있습니다.새로 생성된 JHIPster 2.7 프로젝트에서 테스트했습니다.

처음부터 다음 단계를 완료해야 합니다.

  1. 자기서명증명서 생성
  2. Spring Boot 매뉴얼에 기재되어 있는 대로 SSL 속성을 application.properties 또는 application.yml에 추가합니다.
  3. (임의) HTTP를 HTTPS로 리다이렉트 합니다.

자기서명증명서

해야 합니다.이 디렉토리에서 수행할 수 .이 작업은 다음과 같이 수행할 수 있습니다.keytool이것은 Java에서 제공하는 유틸리티 스크립트입니다.

keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
Enter keystore password:  
Re-enter new password:
What is your first and last name?
  [Unknown]:  
What is the name of your organizational unit?
  [Unknown]:  
What is the name of your organization?
  [Unknown]:  
What is the name of your City or Locality?
  [Unknown]:  
What is the name of your State or Province?
  [Unknown]:  
What is the two-letter country code for this unit?
  [Unknown]:  
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
  [no]:  yes

했습니다.mypassword이치노하면 " " " " 가 표시됩니다.keystore.p12를 참조해 주세요.

을 SSL에 합니다.application.properties ★★★★★★★★★★★★★★★★★」application.ymlSpring Boot 매뉴얼에 기재되어 있는 바와 같이

「Tomcat」HTTPS.은 URL에 .src/main/resources/요.application.yml( (의application-dev.yml다음 속성을 사용합니다.

server:
  ssl:
    key-store: keystore.p12
    key-store-password: mypassword
    keyStoreType: PKCS12
    keyAlias: tomcat

Maven()을 사용하여 어플리케이션을 Maven(JHipster 어플리케이션으로 선택한 에는 Gradle)으로 수 .mvn clean packagemvn spring-boot: run을 사용하여 응용 프로그램을 실행합니다.이제 https://localhost:8080에서 응용 프로그램에 액세스할 수 있습니다.

위해서, 속성 하는 것이 이지만, 는 이미 에되어 있기 때문에 .application-dev.yml ★★★★★★★★★★★★★★★★★」application-prod.yml 그 요.application.yml


(임의) HTTPS 에 리다이렉트 HTTP 를 추가합니다.

로 할 수 입니다.application.propertiesHTTPS를 사용합니다.도 해, 로 , 를 가 있습니다.@Configuration와 같은

@Bean
  public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory tomcat = new      TomcatEmbeddedServletContainerFactory() {
        @Override
        protected void postProcessContext(Context context) {
          SecurityConstraint securityConstraint = new SecurityConstraint();
          securityConstraint.setUserConstraint("CONFIDENTIAL");
          SecurityCollection collection = new SecurityCollection();
          collection.addPattern("/*");
          securityConstraint.addCollection(collection);
          context.addConstraint(securityConstraint);
        }
      };

    tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
    return tomcat;
  }

  private Connector initiateHttpConnector() {
    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setPort(8080);
    connector.setSecure(false);
    connector.setRedirectPort(8443);

    return connector;
  }

이 답변은 기본적으로 같은 주제에 대한 블로그 투고 카피입니다.http://www.drissamri.be/blog/java/enable-https-in-spring-boot/

Driss Amri의 훌륭한 답변을 연장하기 위해BrowserSync.

http를 지원하지 않거나 http가 https로 리다이렉트된 경우BrowserSync동작하지 않습니다.이 기능이 다시 작동하도록 하기 위해 필요한 변경은 거의 없습니다.

  1. gulp/config.diag,apiPort그리고.uri대상:

    apiPort: 8443, 
    uri: 'https://localhost:',
    
  2. gulp/module.module: 추가options.rejectUnauthorized = false;안으로proxyRoutes이 노드에서 자기서명증명서에 대한 불만이 발생하지 않도록 합니다.

    proxyRoutes.map(function (r) {
        var options = url.parse(baseUri + r);
        options.route = r;
        options.preserveHost = true;
        options.rejectUnauthorized = false;
        return proxy(options);
    }));
    
  3. 임의로 빌려주다BrowserSynchttps를 통해 콘텐츠를 제공합니다.와 함께 추천합니다.Spring Social수고를 덜기 위해서.추가만 하면 됩니다.https: true안으로browserSyncgulp/gulp.discall:

    browserSync({
        open: true,
        port: config.port,
        server: {
            baseDir: config.app,
            middleware: proxies
        },
        https: true
    });
    

    이제 Browser Sync는 자체 서명된 증명서와 함께 콘텐츠를 제공합니다.다음에 대해 작성된 것을 재사용할 수 있습니다.Spring Boot자세한 내용은 Browser Sync 홈페이지를 참조하십시오.

웹 팩을 사용하는 사용자는 Driss Amri의 답변을 다음 두 가지 변경으로 완료할 수 있습니다.

proxy.conf.json을 변경합니다.

{
    "*": {
        "target": "https://localhost:8443",
        "secure": true
    }
}

API 요구를 새로운 https 주소로 리다이렉트 합니다.다음으로 webpack 파일을 변경합니다.예를 들어 webpack.dev.js의 변경 예를 나타냅니다.

module.exports = webpackMerge(commonConfig({ env: ENV }), {
devtool: 'eval-source-map',
devServer: {
    contentBase: './target/www',
    proxy: [{
        context: [
            /* jhipster-needle-add-entity-to-webpack - JHipster will add entity api paths here */
            '/api',
            '/management', ...
            '/auth'
        ],
        target: 'https://127.0.0.1:8443',
        /* set secure to false here, otherwise self-signed certification cause DEPTH_ZERO_SELF_SIGNED_CERT proxy errors */
        secure: false
    }]
},

언급URL : https://stackoverflow.com/questions/29522114/how-to-add-self-signed-ssl-certificate-to-jhipster-sample-app

반응형