https 설정

3714 단어 https
HTTP 는 우리 가 이미 잘 알 고 있 습 니 다.하나의 인터넷 주 소 는 이와 같 습 니 다.http://xxx.com 전통 적 인 HTTP 사이트 에는 매우 큰 안전 위험 이 있 습 니 다.즉,모든 사용자 가 전송 하 는 정 보 는 암호 화 되 지 않 은 상태 에서 중요 한 정 보 를 쉽게 캡 처 할 수 있 기 때문에 HTTPS 가 생 겨 났 습 니 다.그러면 HTTPS 는 무엇 입 니까?쉽게 말 하면 HTTPS 는 보안 버 전의 HTTP 입 니 다.HTTPS 는 HTTP+SSL,즉 HTTP 에 암호 화 정 보 를 처리 하 는 모듈 을 추가 한 것 입 니 다.그래서 전 송 된 데 이 터 는 모두 암호 화 된 데이터 입 니 다.https 프로 토 콜 원 리 는 어떻게 된 것 입 니까?우선,클 라 이언 트 와 서버 가 연결 을 구축 하고 각자 다른 비밀 키 와 공개 키 를 생 성 합 니 다.서버 가 클 라 이언 트 에 게 공개 키 를 되 돌려 준 다음 에 클 라 이언 트 가 이 공개 키 를 들 고 검색 할 것 을 암호 화하 여 비밀문서 라 고 부 르 고 자신의 공개 키 와 함께 서버 에 되 돌려 줍 니 다.서버 는 자신의 비밀 키 를 들 고 비밀 문 서 를 복호화 한 다음 에 응답 한 데 이 터 를 클 라 이언 트 의 공개 키 로 암호 화하 여 클 라 이언 트 에 게 되 돌려 줍 니 다.클 라 이언 트 는 자신의 비밀 키 를 들 고 비밀 문 서 를 복호화 합 니 다.데 이 터 를 드러내다.물론 구체 적 인 암호 화 알고리즘 은 비교적 복잡 하 다.안전 암호 화 를 전문 적 으로 하지 않 으 면 암호 화의 구체 적 인 절 차 를 너무 세밀 하 게 이해 할 필요 가 없다.우 리 는 HTTPS 가 전 송 된 데 이 터 를 암호 화하 기 위해 서 는 데이터 암호 화 를 복호화 할 수 있 고 서로 다른 사용자 가 서로 다른 계산 방법 을 사용 하여 모든 사용자 의 안전성 을 확보 해 야 한 다 는 것 을 알 기만 하면 된다.그러나 여기 서 문제 가 하나 있 습 니 다.한 사이트 가 당신 과 의 전송 을 암호 화 할 수 있 는 모델 을 보장 하 더 라 도 이 사이트 자체 가 낚시 사이트 라면?암호 화 복호화 를 제공 한 것 이 무슨 의미 가 있 습 니까?당신 의 개인 정 보 는 여전히 그들 에 게 누설 되 지 않 습 니까?그래서 신뢰 관계 에 문제 가 생 겼 습 니 다.사 이 트 는 암호 화 복호화 를 제공 할 수 있 고 신뢰 할 수 있 는 사이트 가 되 어야 합 니 다.이 는 인증서 라 는 또 다른 개념 이 있 습 니 다.증 서 는 한 사이트 의 합 법성 을 검증 하 는 데 사용 되 고 보통 제3자 기구 에서 만 발급 할 수 있 습 니 다.그러나 이'제3자 기구'는 도대체 어디 에 있 습 니까?원 격 서비스 입 니까?말 도 안 되 죠?원 격 서비스 라면 모든 상호작용 이 느 려 질 것 이다.그래서 이 제3자 기구의 검증 기능 은 클 라 이언 트 의 로 컬 에 만 놓 을 수 있다.물론 저 희 는 공부 하 는 과정 에서 인증 서 를 구 매 할 필요 가 없습니다.인증서 도 직접 서명 할 수 있 습 니 다.다음은 nginx ssl 모듈 을 설치 하고 컴 파일 할 수 있 습 니 다./configure--prefix=/usr/local/nginx-with-httpssl_module,설치 경 로 를 지정 하고 SSL 모듈 을 사용 한 다음 make;make install 하면 됩 니 다.이어서 비밀 키 생 성,[root@server01 nginx]# mkdir conf/ssl ; cd conf/ssl,CSR 파일 생 성,openssl req-new-key server.key-out server.csr,서버 인증서 생 성 신청 파일 server.csr,[root@server01 ssl]# openssl genrsa -des3 -out server.key 1024[root@server01 ssl]# openssl req -new -key server.key -out server.csrEnter pass phrase for server.key:You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:BJLocality Name (eg, city) [Default City]:BJOrganization Name (eg, company) [Default Company Ltd]:COMPANYOrganizational Unit Name (eg, section) []:Common Name (eg, your name or your server's hostname) []:dami01.example.comEmail Address []:[email protected]
Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:
cp server.key server.key.org
인증서 파일 server.crt,openssl x509-req-days 365-in server.csr-signkey server.key-out server.crt 를 만 듭 니 다.지금까지 인증서 생 성 이 완료 되 었 습 니 다.그 다음 에 nginx 설정 파일 을 바 꾸 어 HTTPS 를 정상적으로 실행 할 수 있 도록 해 야 합 니 다.다음 과 같이 server 를 새로 만 듭 니 다.기본 443 포트(HTTPS 기본 포트)에서 작업 한 다음 인증서 와 키 의 위 치 를 지정 하고 인증서 생 성 에 있 는 hostname(servername),server {
listen 443;
ssl on;

ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;

server_name example.com;

location / {
   return 209;
}

}
[root@server01 nginx]# netstat -tnlp | grep 443tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 40603/nginx
[root@server01 nginx]# curl -k -I https://example.com/HTTP/1.1 209 Server:nginx/1.14.1Date:Thu,29 July 2020 16:13:21 GMTContent-Type:application/ocket-streamContent-length:0Connection:keep-alive 이렇게 해서 우리 HTTPS 사이트 가 성공 적 으로 만 들 어 졌 습 니 다^ ^

좋은 웹페이지 즐겨찾기