nodejs에서 https 쿠키 설정

Aug 23 2020

내 웹 사이트에서 로그인 시스템을 설정하려고합니다.

nodejs 쿠키가이를 수행하는 좋은 방법이라고 들었습니다.

다음 링크에서 :
https://stackoverflow.com/a/21809393/322537
https://nodejs.org/dist/latest-v8.x/docs/api/https.html
https 서버가 생성되는 방법의 예를 찾았습니다. 클라이언트가 요청할 때마다 createServer 함수가 실행되어야한다는 것이 내 이해입니다.

그래서 내 코드에 다음이 있습니다.

var server_https=modules.https.createServer({
    key: this.ssl_key,
    cert:this.ssl_cert
    },this.respond_to_client).listen(this.port);


mconnection.prototype.respond_to_client=function(request,response){
    console.log('responded to client');
    }

웹 사이트가 실행 중이므로 서버가 정상적으로 실행되는 것 같습니다. 그러나 respond_to_client 함수는 nodejs의 로그 파일이 'responded to client'문자열을 나타내지 않기 때문에 실행되지 않는 것으로 보입니다.

어떻게 그럴 수 있습니까? 코드에서 곧 https 서버를 웹 소켓으로 업그레이드하는 것과 관련이 있습니까?

업데이트 :
다음은 서버 파일입니다.
https://openage.org/s.js
다음은 연결 모듈입니다.
https://openage.org/c.js

여기에 제공되는 채팅 프로그램이 있습니다.
https://openage.org/chat/14/?page=index

계획은 클라이언트를 식별하기 위해 쿠키를 만든 다음 로그인 시스템을 설정하는 것입니다. 그러나 나는 이것에 갇혀 있습니다. / :

답변

3 factorypolaris Aug 26 2020 at 17:27

로컬 테스트를 위해 노드 스크립트를 복제했습니다. 나는 처음에 http (vs https)에서 실행되는 것을 얻었고 응답을 잘받을 수있었습니다. 그러나 https로 이동하면 서버에서 요청을받지 않습니다. 브라우저는 실제 요청이 전송되기 전에 먼저 보안 연결을 설정해야합니다.

동일한 포트에서 여러 서버 (https 및 ws)를 실행하려고 할 때 비슷한 문제가 발생했습니다. 현재 가지고있는 것은 매우 비슷하지만 https.createServer ({options}, handler)에 대한 설정은 조정이 필요합니다.

당신이있는 곳 :

var server_https= https.createServer({
        key: this.ssl_key,
        cert:this.ssl_cert
},respond_to_client).listen(this.port);

"ca"에 대한 옵션도 추가해야합니다.

var server_https= https.createServer({
        key: this.ssl_key,
        cert: this.ssl_cert,
        ca: this.ssl_ca,  // also add this
},respond_to_client).listen(this.port);

"ca"에 사용한 값은 인증서 서명 기관에서받은 intermediate.crt 파일의 내용입니다.


중대한

자체 서명 된 인증서를 사용하여이 작업을 수행 할 수는 있지만 서명 기관이 없기 때문에 그렇게 할 수 없었습니다.


따라서 다른 인증서 파일에 대해 수행 한 것처럼 intermediate.crt 파일에 대해서도이를 수행해야합니다.

//Where you read your other cert files: add another.
this.ssl_ca = modules.fs.readFileSync(this.ssl_ca_pathfile);

나는 이것이 어렵고 제대로 문서화되어 있지 않다는 것을 알았습니다. SSL / TSL 전문가는 아니지만 중간 인증서에 대한 빠른 검색이 나타납니다.

중간 인증서는 특히 최종 엔터티 서버 인증서를 발급하기 위해 신뢰할 수있는 루트에서 발급 한 하위 인증서입니다. 그 결과 신뢰할 수있는 루트 CA에서 시작하여 중간을 거쳐 발급 된 SSL 인증서로 끝나는 인증서 체인이 생성됩니다. 이러한 인증서를 체인 된 루트 인증서라고합니다. 출처

intermediate.crt는 다음 구조를 갖습니다.

-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----

다음은 브라우저의 응답입니다.