Author: byun1114

  • WebDAV

    https://zetawiki.com/wiki/%EC%9A%B0%EB%B6%84%ED%88%AC_%EC%95%84%ED%8C%8C%EC%B9%98_WebDAV_%EC%84%A4%EC%A0%95

    우연히 WebDAV이 ‘웹 기반의 읽고 쓰는’이라는 구절을 보았다. 혹시나 싶어서 Apache에서 우선 WebDAV이 가능하도록 하였더니 curl 에서 파일이 업로드 된다. 보안 설정을 확인해 보아야 하겠지만, 클라이언트가 통제가 안된다면 차라리 SCP가 좋을 것 같다.

  • 리버스 프록시를 위한 NGINX 구성 – 작성중

    인터넷에도 정보는 많지만, 그래도 신뢰할 수 있는 정보인 책(NGINX HTTP SERVER)을 참고하였다.

    • ssl on; 보다는 listen 443 ssl; 을 이용한다.
    • TLS 버젼: 다음과 네이버는 TLS v1.2가 기본이다. SCI-HUB와 PubMed는 TLS v1.3을 이용한다. v1.2도 충분히 안전하다고는 한다.
    • 암호화 방식: 선택할 수 있는 옵션은 많다. openssl ciphers 명령어를 통하여 사용할 수 있는 목록을 확인할 수 있다. 확실하지는 않은데, 공개키 암호 방식의 대표주자인 RSA가 있는 것 1개와 대칭 열쇠 암호와 관련된 것이 포함되어야 하는 것 같다.
    • allow와 deny: 위에서 아래 순서대로 적용된다. 먼저 언급된 것이 더 큰 범위라면 아래쪽의 범위는 무시된다.
    server {
            listen 443 ssl;
            ssl_certificate test.crt;
            ssl_certificate_key test.key;
            ssl_protocols TLSv1.3;
            ssl_prefer_server_ciphers on;
            ssl_ciphers "TLS-AES-128-GCM-SHA256:ECDHE-RSA-AES128-SHA256";
            location / {
                    allow 190.70.0.0/0;
                    deny all;
                    proxy_pass http://127.0.0.1:3000;
            }
    }
    
  • HTTPS로 전송하기

    postgREST가 HTTPS를 지원하지 않고, 리버스 프록시를 이용하라고 하고 있으므로, 그대로 따라해 보았다.

    NGINX를 설치하는 과정에서 생성되는 /etc/nginx/nginx.conf 파일을 보면 다음과 같은 내용이 있다. 즉, conf.d 폴더 내부의 설정 파일을 반영한다는 것이다.

    {... 
       include /etc/nginx/conf.d/*.conf;
    }

    HTTPS를 이용하려면 인증서, 인증키가 필요하다. 테스트 목적이기 때문에 openssl 명령어를 이용해서 만들어 주었다. 나중에 클라이언트에서 접속하기 위해서 공개키를 만들어야 한다. 인터넷에 있는 수 많은 방법 중에서 다음의 방법이 가장 쉬웠다.

    $ openssl req -new -newkey rsa:2048 -nodes -keyout test.key -out test.csr
    $ openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt
    $ openssl rsa -in test.key -out public.key -pubout

    초보자라서 conf.d 폴더에 있는 default.conf 파일을 수정하는 방법을 이용하였다. 다음과 관련된 내용을 추가해 준다.

    • HTTP로 접속되면 HTTPS로 변환하도록 하는 부분
    • HTTPS 설정과 관련된 부분
    • postgREST 포트인 3000으로 연결해 주는 부분
    
    server {
            listen 443;
            server_name SERVERNAME;
            ssl on;
            ssl_certificate test.crt;
            ssl_certificate_key test.key;
    
            location / {
                    proxy_pass http://127.0.0.1:3000;
            }
    }
    server {
            listen       80;
            server_name  SERVERNAME;
            return 301 https://SERVERNAME;
    }

    이렇게 하면 requests.post에서 https로 자료를 전송할 수 있다. 원래는 생성된 공개키로 문제없이 되어야 하는데, 뭐가 문제인지 connection과 관련된 오류 메세지가 발생한다. 일다 verifty=False로 해당 부분은 넘어가는 걸로 해결하고 있다.

  • OAuth 2.0 마스터

    아마 다른 서비스의 ID/PW를 이용하는 그런 종류의 서비스는 이것을 이용하는 것 같다. 내가 필요한 부분인지 아닌지에 대한 판단이 서지는 않는다. 관련되어 빌린 3권 중 가장 얇아서 우선 훑어본 책이다.

    이 책의 내용중에서 인증키를 주기적으로 변경하는 부분은 좋은 부분인 것 같다.