서버 환경에 ssl 인증서 적용하기(zeroSSL)
2024. 8. 12. 11:26
HTTP
무료 ssl 인증서는 3개월마다 한번씩 만료된다. 이를 서버에 다시 적용할 때마다 방법을 다시 찾아보는게 귀찮아서, 문서화도 하고 약했던 서버 관련 개념도 정리할 겸 블로깅해본다. 따라서 이번 포스팅에서는 Nginx를 이용해 Ec2 인스턴스에서 SSL/TLS 인증서를 설정하고, HTTPS 보안 연결을 활성화하는 과정을 작성해보려 한다. SSL/TLS 는 웹 사이트와 사용자의 브라우저 간 통신을 암호화하여, 데이터를 안전하게 만드는 프로토콜이다.SSL과 TLS는 사실상 같은 기능을 하는 프로토콜이지만 TLS가 SSL의 후속 버전이다. 자세한건 다음 블로깅에서 포스팅할 예정 일단 인증서 발급 사이트에서 다운받은 인증서를 인증서 가져오기로 가져온다! (ZeroSSL를 이용했다) 1️⃣ 다운받은 인증서 가져오..
Spring 프로젝트에서 웹소켓 적용하기~!! 2탄
2024. 6. 12. 21:44
Spring
🔎하고싶은것유저중 한명이 POST,UPDATE,DELETE요청을 보내서 여행 일정을 변경하면같은 세션에 있는 다른 유저들에게도 페이지 새로고침되어 변경사항이 보였으면 좋겠다! 🔎구현 방법서버에서 클라이언트의 엔티티변경(POST,UPDATE,DELETE) 요청을 처리한 후 브로드캐스트하여 변경사항을 모든 클라이언트에게 알림=> 웹소켓에 연결된 클라이언트는 메시지를 받을 때 페이지를 새로고침함 브로드캐스트❔❓한 장치가 여러 장치에게 동시에 메세지를 전송하는 것을 의미하며여기서는 웹소켓을 통해 서버에서 클라이언트들에게 동시에 메세지를 전송하는 방식을 의미한다. 브로드캐스트: 한 번의 메시지 전송으로 네트워크에 연결된 모든 장치(또는 지정된 그룹)에게 메시지를 전달하는 방식멀티캐스트(Multicast):..
Spring 프로젝트에서 웹소켓 적용하기~!! 1탄
2024. 6. 10. 23:01
Spring
여행 일정 공유사이트를 만들며 여러명이서 실시간으로 편집상태를 공유하는 기능이 있으면 좋겠다고 생각했고, 이를 위해 웹소켓을 연동하게 되었다. 기본 HTTP는 stateless하기 때문에 서버에 변경사항이 생겨도 클라이언트에서 요청을 하지 않으면 변경사항이 적용되지 않는 반면 WebSocket은 지속적으로 connection을 유지하기 때문에 실시간으로 변경사항이 적용된다! 웹소켓의 이런 특징을 이용해 실시간 편집기능을 구현할 수 있다. 그리고 WebSocket 은 HTTP를 통해 최초 연결(핸드세이크)되며 이후 일정 시간이 지나면 HTTP연결은 자동으로 끊어지고 WebSocket Connection은 유지된다 다만 웹소켓은 stateful 프로토콜로서 connection을 항상 유지해야하기 때문에 트..
[ERROR]Git에서 폰트파일 깨지는 문제
2024. 5. 23. 14:54
Error
🔎문제상황폰트 파일을 깃에만 올리면 깨지는 문제가 발생했다. 🔎원인폰트 파일이나 바이너리 파일은 본질적으로 텍스트 파일이 아니기 때문에,Git이 이 파일들을 텍스트 파일로 처리하려고 할 경우 파일이 깨질 수 있다. 🔎해결법 gitattributes에 다음 설정 추가 * text eol=lf .gitattributes 파일에서 특정 파일 타입에 대해 binary 속성을 지정하거나,모든 파일에 대해 -text 속성을 지정하여 Git이 라인 엔딩을 변경하지 않도록 할 수 있다. text 속성 -> Git이 해당 파일을 텍스트 파일로 인식하도록 지정텍스트 파일로 인식된 파일은 Git이 라인 엔딩을 자동으로 변환할 수 있게 됨. eol=lf -> 라인 엔딩을 강제로 LF(Line Feed)로 설정하..
프로그래머스 SQL 고득점 KIT 뿌시기 - SELECT 1
2024. 5. 5. 18:37
SQL
코딩테스트 평균 일일 대여 요금 구하기 ROUND(컬럼명, 1(소수 둘쨰자리에서 반올림=첫째자리까지 보임)) => 반올림 AVG(컬럼명) => 컬럼의 평균 AS => 컬럼 이름 지정 답SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEEFROM CAR_RENTAL_COMPANY_CAR cWHERE c.CAR_TYPE = 'SUV' 프로그래머스 조건에 맞는 도서 리스트 출력하기 DATE FORMAT 함수DATE_FORMAT(컬럼명, format형식) FORMAT 형식에 들어갈 수 있는 형식 지정자%Y: 4자리 연도 (예: 2024)%y: 2자리 연도 (예: 24)%m: 월 (01~12)%d: 일 (01~31)%H: 24시간 형식의 시간 (00~23)%i: 분 (00~59)..
Google Oauth2
2024. 4. 2. 15:18
Spring
OAuth란? 타사 웹사이트나 웹이 리소스에 접근할 수 있게 허용해 주는 것이 주 목적이다 OAuth는 인증(Authentication)과 인가(Authorization)중 인가에 조금 더 초점을 맞추고 있따. 인증이란 ? 인증은 사용자가 자신의 신원을 사용하는 프로세스이다. 예를 들어 시스템에 로그인하려면 직원 ID, 또는 사용자 ID를 확인한다. 인가란? 인증된 사용자에 대해 특정 자원 또는 서비스에 대한 엑세스 권한을 부여 즉, 누가 어떤 자원에 접근할 수 있는지 결정 구글 로그인을 예로 들자면, 우리는 사용자의 정보, 즉 해당 사용자가 구글에 가입이 되어있는지는 구글 서버측에서 확인을 하고, 그 후 해당 정보와 인증된 사용자에게 권한을 제공해준다. 웹 서버 애플리케이션에서의 Google Oauth..
EC2환경에서 환경변수 적용하기(ubuntu)
2024. 3. 28. 00:24
etc
application.yml파일에서 보안이 필요시되는 정보는 다음과같이 환경변수를 이용해서 로컬에 환경변수를 추가해줫다. 배포시에도 이 환경변수를 추가해줘야 한다. EC2인스턴스의 .bashrc 파일에서 환경변수를 추가한다. home의 ububtu로 이동해서 ls -al 명령어를 입력해보면 .bashrc 파일이 있다. 이 파일에 환경변수를 추가할 것 1. /home/ubuntu 경로에서 다음 명령어를 실행한다. nano .bashrc 그럼 다음과 같은 창이 뜬다 2. 맨 아래로 이동하여 export 명령어로 환경변수를 추가한다. export GOOGLE_CLIENT_SECRET=123123123 3. 변경사항 저장 (ctrl X -> Y -> Enter) 4. .bashrc' 파일에서 설정한 환경 변수를..
[ERROR]@Authentication 사용 시 principal is null
2024. 3. 26. 01:43
Error
회원가입 후 유저의 닉네임과, MBTI를 추가로 입력해주는 로직을 만들면서 Access Token으로 유저의 정보를 가져올 필요가 있었기 때문에 Access Token을 헤더에 넣어준 후 다음과 같이 @Authentication으로 유저의 정보를 가져오려고 했었다. @Operation(summary = "엑세스 토큰을 이용해 유저 정보를 업데이트합니다.") @PatchMapping public ResponseEntity signup(@Valid @RequestBody UserUpdateDto updateDto, @AuthenticationPrincipal UserPrincipal principal) { return ResponseEntity.ok(userService.updateUser(updateDto..
백준 11723
2024. 3. 20. 13:06
Algorithm
문제 처음코드 : Hash의 contains 함수가 가장 효율이 좋기에 HashMap의 contains 함수를 이용했고, all 에 대한 HashMap 을 따로 만들어 all 연산 시마다 now에 all 의 값을 할당해 주었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { HashMap now = new HashMap(); Buffered..