목차
1 소개
2 密码学基础
https에 대해 이야기하려면 당연히 보안에 대해 이야기해야 합니다. 보안에 관해 이야기하려면 암호화에 대한 지식이 필요합니다. " >2 암호화의 기본

https에 대해 이야기하려면 당연히 보안에 대해 이야기해야 합니다. 보안에 관해 이야기하려면 암호화에 대한 지식이 필요합니다.

2.2 두 가지 암호화 방법
:
2.3 证书
3 Springboot整合HTTPS
3.1 先让Web跑起来
3.2 生成密钥文件jks
3.3 重新配置并重启
3.4 使用PKS12格式
Java java지도 시간 https를 Springboot와 통합하는 방법

https를 Springboot와 통합하는 방법

May 11, 2023 am 09:55 AM
https springboot

1 소개

HTTP는 안전하지 않습니다. SSL로 덮어 HTTPS로 만들어야 합니다. 이 기사에서는 예제를 사용하여 SpringbootHTTPS에 통합하는 방법을 소개합니다. HTTP是不安全的,我们需要给它套上SSL,让它变成HTTPS。本文章将用实例介绍Springboot整合HTTPS

2 密码学基础

要谈https就要谈Security

2 암호화의 기본

https에 대해 이야기하려면 당연히 보안에 대해 이야기해야 합니다. 보안에 관해 이야기하려면 암호화에 대한 지식이 필요합니다.

2.1 암호화 시스템

    암호화 시스템을 구축하려면 다음과 같은 5개의 공백으로 구성되어야 합니다.
  • Plaintext M: 암호화 또는 복호화 전의 정보
  • Ciphertext C: 암호화 후의 일반 텍스트
  • 키 K: 암호화 키와 복호화 키로 구성됩니다.
  • 암호화 E: 일반 텍스트에서 암호 텍스트로 변환
  • 복호화 D: 암호 텍스트에서 일반 텍스트로 변환.

그림에 표시된 대로: https를 Springboot와 통합하는 방법

2.2 두 가지 암호화 방법

2.2.1 대칭 암호화

대칭 암호화 또는 단일 키 암호화는 암호화 키와 암호 해독 키가 동일함을 의미합니다(또는 서로 쉽게 계산할 수 있는 암호화 방법입니다.

대칭 암호화의 주요 장점은 빠른 암호화 및 암호 해독 작업과 높은 효율성입니다.

제한 사항: 복잡한 키 배포, 어려운 키 관리, 보안 통신 시스템의 열악한 개방성 및 디지털 서명

대표 알고리즘: DES 알고리즘 , AES 알고리즘;

작은 예

:

明文为48,加密算法f(x)=8x+71,
则密文C=8*48+71=455
则解密算法为f(x)=(x-71)/8;
则解密后的明文M=(455-71)/8=48;
로그인 후 복사

2.2.2 비대칭 암호화

비대칭 암호화는 암호화와 복호화가 각각 다른 키를 사용하며 암호화 키 암호화 방법에서 복호화 키를 파생할 수 없다는 의미입니다.

주요 장점: 간단한 키 배포, 쉬운 관리, 우수한 시스템 개방성 및 디지털 서명 실현 가능

제한 사항: 암호화 및 암호 해독 작업 효율성이 낮음

대표 알고리즘: RSA 알고리즘, ECC 알고리즘; 큰 예:

단계는 다음과 같습니다.

StepDescription FormulaNote1 두 개의 소수를 찾습니다P, Q 2공통계수 계산N=P*Q3오일러 함수 계산ψ(N) = (P-1)(Q-1)4공개 키 계산 E1 E * D % ψ(N) = 1C: 암호문 M: 일반 텍스트7DecryptionM =C^D mod NC: 암호문 M: 일반 텍스트

其中,公钥=(E , N) ,私钥=(D, N),对外,我们只暴露公钥。

1.找出两个质数
随便找两个质数,我们找P=5,Q=11。

2.计算公共模数
公共模数N=P*Q=5*11=55

3.计算欧拉函数
φ(N) = (P-1)(Q-1)=4*10=40

4.计算公钥E
1 <p>至此,整个非对称加密过程演示了一遍,希望大家能理解,特别是非对称加密,因为<strong>HTTPS</strong>使用的是非对称加密。实际的使用算法更复杂,密钥长度会更大。</p><h3 id="证书">2.3 证书</h3><p>要使用SSL,需要有证书,这个证书文件是包含公钥密钥,也就是非对称加密中要使用的。</p><p>获取证书有两种方式:</p>
로그인 후 복사
  • CA(Certificate Authority)机构获取,即客户端会认可的证书,具有公信力;有免费也有收费的,收费的比较稳定比较安全。

  • 自签证书,自己制作证书,一般用于测试,浏览器不承认。

为方便起见,在本次实例中使用自签证书,两种证书整合过程并无差异。

3 Springboot整合HTTPS

3.1 先让Web跑起来

作为一个Web应用,我们先让它跑起来,然后再整合https

(1)引入Web依赖:

<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-web</artifactid></dependency>
로그인 후 복사

(2)配置端口:

server.port=80
로그인 후 복사

(3)实现Contrlloer

@RestControllerpublic class HelloController {@GetMapping("/hello")public String hello() {return "Welcome to www.pkslow.com";
    }
}
로그인 후 복사

完成上面工作后,启动应用即可。

访问http://localhost/hello 得到下面结果,说明整个Web应用起来了。

https를 Springboot와 통합하는 방법

3.2 生成密钥文件jks

通过命令行生成密钥文件如下:

keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keystore localhost.jks -dname CN=localhost,OU=Test,O=pkslow,L=Guangzhou,C=CN -validity 731 -storepass changeit -keypass changeit
로그인 후 복사

命令行重要参数的意义:

  • alias:密钥别名,可以随便起,不冲突就行;

  • keyalg:加密算法;

  • keysize:密钥长度,2048基本就不可能破解了;

  • keystore:keystore的文件名;

  • dname:这个很关键,特别是CN=后面要按正确的域名来写;

  • validity:cert的有效期;

执行完以上命令后,就会生成localhost.jks文件,把该文件放到classpath下即可,当然也可以放到其它位置,配置文件指定正确即可。

3.3 重新配置并重启

按照实际情况重新配置application.properties文件:

server.port=443server.ssl.enabled=trueserver.ssl.key-store-type=jksserver.ssl.key-store=classpath:localhost.jksserver.ssl.key-store-password=changeitserver.ssl.key-alias=localhost
로그인 후 복사

重启后访问如下:

发现有红色警告,因为这是自签名的cert,并不被Chrome所认可,所以会校验失败。以前的Chrome版本只是警告,但还是可以访问的,现在新版本的已经不能访问了。

通过Postman来访问便可:

https를 Springboot와 통합하는 방법

3.4 使用PKS12格式

如果想使用PKCS12替换JKS,命令和配置可以参考下面:

生成密钥:

keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -storetype PKCS12 -keystore localhost.p12 -dname CN=localhost,OU=Test,O=pkslow,L=Guangzhou,C=CN -validity 731 -storepass changeit -keypass changeit
로그인 후 복사

配置文件如下:

server.port=443server.ssl.enabled=trueserver.ssl.key-store-type=PKCS12server.ssl.key-store=classpath:localhost.p12server.ssl.key-store-password=changeitserver.ssl.key-alias=localhost
로그인 후 복사



6 Encryption C = 엠^ E mod N

위 내용은 https를 Springboot와 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Redis를 사용하여 SpringBoot에서 분산 잠금을 구현하는 방법 Redis를 사용하여 SpringBoot에서 분산 잠금을 구현하는 방법 Jun 03, 2023 am 08:16 AM

1. Redis는 분산 잠금 원칙과 분산 잠금이 필요한 이유를 구현합니다. 분산 잠금에 대해 이야기하기 전에 분산 잠금이 필요한 이유를 설명해야 합니다. 분산 잠금의 반대는 독립형 잠금입니다. 다중 스레드 프로그램을 작성할 때 공유 변수를 동시에 작동하여 발생하는 데이터 문제를 방지하기 위해 일반적으로 잠금을 사용하여 공유 변수를 상호 제외합니다. 공유 변수의 사용 범위는 동일한 프로세스에 있습니다. 동시에 공유 리소스를 운영해야 하는 여러 프로세스가 있는 경우 어떻게 상호 배타적일 수 있습니까? 오늘날의 비즈니스 애플리케이션은 일반적으로 마이크로서비스 아키텍처입니다. 이는 하나의 애플리케이션이 여러 프로세스를 배포한다는 의미이기도 합니다. 여러 프로세스가 MySQL에서 동일한 레코드 행을 수정해야 하는 경우 잘못된 작업으로 인해 발생하는 더티 데이터를 방지하려면 배포가 필요합니다. 현재 소개할 스타일은 잠겨 있습니다. 포인트를 얻고 싶다

SpringBoot와 SpringMVC의 비교 및 ​​차이점 분석 SpringBoot와 SpringMVC의 비교 및 ​​차이점 분석 Dec 29, 2023 am 11:02 AM

SpringBoot와 SpringMVC는 모두 Java 개발에서 일반적으로 사용되는 프레임워크이지만 둘 사이에는 몇 가지 분명한 차이점이 있습니다. 이 기사에서는 이 두 프레임워크의 기능과 용도를 살펴보고 차이점을 비교할 것입니다. 먼저 SpringBoot에 대해 알아봅시다. SpringBoot는 Spring 프레임워크를 기반으로 하는 애플리케이션의 생성 및 배포를 단순화하기 위해 Pivotal 팀에서 개발되었습니다. 독립 실행형 실행 파일을 구축하는 빠르고 가벼운 방법을 제공합니다.

springboot가 파일을 jar 패키지로 읽은 후 파일에 액세스할 수 없는 문제를 해결하는 방법 springboot가 파일을 jar 패키지로 읽은 후 파일에 액세스할 수 없는 문제를 해결하는 방법 Jun 03, 2023 pm 04:38 PM

Springboot가 파일을 읽지만 jar 패키지로 패키징한 후 최신 개발에 액세스할 수 없습니다. springboot가 파일을 jar 패키지로 패키징한 후 파일을 읽을 수 없는 상황이 발생합니다. 그 이유는 패키징 후 파일의 가상 경로 때문입니다. 유효하지 않으며 읽기를 통해서만 액세스할 수 있습니다. 파일은 리소스 publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input 아래에 있습니다.

SpringBoot가 Redis를 사용자 정의하여 캐시 직렬화를 구현하는 방법 SpringBoot가 Redis를 사용자 정의하여 캐시 직렬화를 구현하는 방법 Jun 03, 2023 am 11:32 AM

1. RedisAPI 기본 직렬화 메커니즘인 RedisTemplate1.1을 사용자 정의합니다. API 기반 Redis 캐시 구현은 데이터 캐싱 작업에 RedisTemplate 템플릿을 사용합니다. 여기서 RedisTemplate 클래스를 열고 클래스의 소스 코드 정보를 봅니다. 키 선언, 값의 다양한 직렬화 방법, 초기 값은 비어 있음 @NullableprivateRedisSe

Nginx 프록시 관리자를 사용하여 HTTP에서 HTTPS로 자동 점프를 구현하는 방법 Nginx 프록시 관리자를 사용하여 HTTP에서 HTTPS로 자동 점프를 구현하는 방법 Sep 26, 2023 am 11:19 AM

NginxProxyManager를 사용하여 HTTP에서 HTTPS로의 자동 점프를 구현하는 방법 인터넷이 발전하면서 점점 더 많은 웹사이트가 HTTPS 프로토콜을 사용하여 데이터 전송을 암호화하여 데이터 보안과 사용자 개인 정보 보호를 향상시키기 시작했습니다. HTTPS 프로토콜에는 SSL 인증서 지원이 필요하므로 HTTPS 프로토콜 배포 시 특정 기술 지원이 필요합니다. Nginx는 강력하고 일반적으로 사용되는 HTTP 서버 및 역방향 프록시 서버이며 NginxProxy

Nginx 프록시 관리자를 사용하여 HTTPS 프로토콜에서 역방향 프록시를 구현하는 방법 Nginx 프록시 관리자를 사용하여 HTTPS 프로토콜에서 역방향 프록시를 구현하는 방법 Sep 26, 2023 am 08:40 AM

NginxProxyManager를 사용하여 HTTPS 프로토콜에서 역방향 프록시를 구현하는 방법 최근 몇 년 동안 인터넷의 인기와 응용 프로그램 시나리오의 다양화로 인해 웹 사이트 및 응용 프로그램의 액세스 방법이 점점 더 복잡해졌습니다. 웹사이트 액세스 효율성과 보안을 향상시키기 위해 많은 웹사이트에서는 사용자 요청을 처리하기 위해 역방향 프록시를 사용하기 시작했습니다. HTTPS 프로토콜의 역방향 프록시는 사용자 개인 정보를 보호하고 통신 보안을 보장하는 데 중요한 역할을 합니다. 이 기사에서는 NginxProxy를 사용하는 방법을 소개합니다.

여러 테이블을 추가하기 위해 SQL 문을 사용하지 않고 Springboot+Mybatis-plus를 구현하는 방법 여러 테이블을 추가하기 위해 SQL 문을 사용하지 않고 Springboot+Mybatis-plus를 구현하는 방법 Jun 02, 2023 am 11:07 AM

Springboot+Mybatis-plus가 다중 테이블 추가 작업을 수행하기 위해 SQL 문을 사용하지 않을 때 내가 직면한 문제는 테스트 환경에서 생각을 시뮬레이션하여 분해됩니다. 매개 변수가 있는 BrandDTO 개체를 생성하여 배경으로 매개 변수 전달을 시뮬레이션합니다. Mybatis-plus에서 다중 테이블 작업을 수행하는 것은 매우 어렵다는 것을 Mybatis-plus-join과 같은 도구를 사용하지 않으면 해당 Mapper.xml 파일을 구성하고 냄새나고 긴 ResultMap만 구성하면 됩니다. 해당 SQL 문을 작성합니다. 이 방법은 번거로워 보이지만 매우 유연하며 다음을 수행할 수 있습니다.

springboot에서 application.yml의 값을 얻는 방법 springboot에서 application.yml의 값을 얻는 방법 Jun 03, 2023 pm 06:43 PM

프로젝트에서는 일부 구성 정보가 필요한 경우가 많습니다. 이 정보는 테스트 환경과 프로덕션 환경에서 구성이 다를 수 있으며 실제 비즈니스 상황에 따라 나중에 수정해야 할 수도 있습니다. 이러한 구성은 코드에 하드 코딩할 수 없습니다. 예를 들어 이 정보를 application.yml 파일에 작성할 수 있습니다. 그렇다면 코드에서 이 주소를 어떻게 얻거나 사용합니까? 2가지 방법이 있습니다. 방법 1: @Value 주석이 달린 ${key}를 통해 구성 파일(application.yml)의 키에 해당하는 값을 가져올 수 있습니다. 이 방법은 마이크로서비스가 상대적으로 적은 상황에 적합합니다. 프로젝트, 업무가 복잡할 때는 논리

See all articles