오픈웹 관련해서 시끄러운 하루하루…

요 근래 오픈웹에 반감을 가지는 분들이 굉장히 많아지고 있는 것 같다. 뭐 오늘 읽은 내용만 하더라도 아래 정도?

일부 흥미로운 내용들도 있지만 감정에 치우친 글들도 많다. 방준영씨의 경우는 크게 다음 두 가지를 문제 삼고 있는데…

  1. 해외에서 ActiveX 없이 안전하다고? 니네가 페이팔 피싱 사례를 모르는구나?
  2. 공인 인증서는 보안 접속이 아니니까 쓸 필요가 없다고?

이 중 공인 인증서에 관련된 내용을 인용하면 다음과 같다.

그래서 아이디/패스워드만으로 보안을 담보하는 건 안전하지 않고, 돈을 보내고 받는 일은 불편하더라도 공인인증서같은 본인 확인 수단이 필요하다고 생각한다. 그런데 저 교수분의 주장은 공인인증서는 보안 접속이 아니라서 반드시 쓸 필요는 없다고 한다. 보안 접속은 영어로 secure connection이니까 당연히 공인인증서가 시큐어 커넥션일 리 없다. 공인인증서는 영어로 public key certificate니까. 그런데 이게 왜 공인인증서를 안써도 되는 이유가 되는 것인지…?

Founders at Work라는 책에 보면 페이팔 창립자가 인터뷰를 하면서 금융 사기꾼들을 막느라 고생한 이야기에 대해 상당 시간을 할애하고 있다. 특정 회사를 상대로 대규모로, 지속적으로 금융 사기를 벌이는데 못 막아서 쩔쩔 매다가 엄청난 금전 손해를 보거나 아예 어떤 회사는 문까지 닫은 이야기는 한국에서는 상상하기 힘들다. 처음부터 공인인증서 시스템을 만들어 놓고 본인 인증을 철저히 했는데도 그런 일을 당했을까?

김기창 교수님이 오픈웹에서 얘기하고 있다시피 사실 공인 인증서는 보안 접속과 관련된 부분이 아니다. 공인 인증서는 암호화된 통신을 위해 사용하는 것이 아니라 전자 서명에 사용된다. 전자 서명이 뭐냐고? 우선 오래전부터 email 에 사용되는 PGP Signature를 살펴보자.

Continue reading 오픈웹 관련해서 시끄러운 하루하루…

인터넷 뱅킹과 크로스 브라우징

나는 오늘도 인터넷 뱅킹을 위해 모 은행의 홈페이지로 접속했고, 플러그인을 설치해야한다는 페이지를 5분동안 보고 있어야 했다. ‘왜 안넘어가는거야!’ 라고 짜증을 내며 브라우저를 보니 firefox다. 비굴하게 32bit 버젼의 인터넷 익스플로러를 사용해서 접속하니 나도 모르게 실행되는 백신과 키보드 보안 프로그램 그리고 XecureWeb…

이 은행에 있던 돈을 다른 은행에 있는 계좌로 이체를 시킨 뒤 잔고가 얼마인지 확인하기 위해 또 다른 은행사 홈페이지로 접속을 했고, 또 다른 프로그램들이 실행되기 시작했다.

도대체 XecureWeb, INISafeWeb등이 뭐하는 프로그램이길래 설치를 강요받아야 하고, 또 무슨 근거로 신뢰를 강요받아야 하는걸까?

XecureWeb / INISafeWeb 도대체 얘네 뭐하는 애들이야?

크게 인터넷 뱅킹에서 필요한 기능은 두 가지 이다. 인터넷 뱅킹을 하는 동안 오가는 데이터를 중간에서 가로챈다고 하더라도 그 내용을 알아 볼 수 없게 하기 위해 보안 채널을 구성하는 것이 그 첫번째이고, 거래(계좌 이체 등)를 한 사람이 본인이라는 사실을 증명하는 것이 그 두번째이다.

Continue reading 인터넷 뱅킹과 크로스 브라우징

워드프레스를 https 와 함께 이용하는 방법!

개인정보의 유출에 민감하며, https 를 사용할 수 있는 서버를 가지고 있는 사용자들을 위한 간단한 rewrite rule 을 소개하고자 합니다. 오픈웹 사이트를 보면 워드프레스에서 사용자 등록, 로그인, 관리자 모드 등에서는 https 를 사용하도록 리다이렉션이 일어나는 모습을 확인할 수 있습니다.

시작하기에 앞서 이 방식은 아래의 조건을 만족해야 사용할 수 있습니다.

  1. 내 사이트를 https 로 접근이 가능
  2. mod_rewrite 를 사용가능
  3. .htaccess 를 이용 rewrite rule 을 override 가능

워드프레스 루트 디렉토리의 .htaccess 에 들어가야 할 rule 은 다음과 같습니다. (rewrite base 는 wp 의 root location 에 맞게 수정해주면 되겠습니다.)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# For a site running on port 443 (http over ssl)
RewriteCond %{SERVER_PORT} !^80$
RewriteRule !^wp-(admin|login|register)(.*) – [C] RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [L]

# For a site running on port 80 (http)
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^wp-(admin|login|register)(.*) https://%{SERVER_NAME}:10001/wp-$1$2
[L]

RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>

뭔가 복잡하죠 :) 부분부분 설명을 드리자면 아래와 같습니다.

# For a site running on port 443 (http over ssl)
RewriteCond %{SERVER_PORT} !^80$
RewriteRule !^wp-(admin|login|register)(.*) – [C] RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [L]

80번 포트가 아닌 포트로 접속한 경우를 https request 라고 판단을 하고, 그 중 request uri 가 wp-admin, wp-login, wp-register 와 관련된 것이 아닌 경우에 한해 80번 포트로 리다이렉션을 일으킵니다.

결과적으로 https://b.mytears.org:10001/2005/03/136 과 같은 url 을 http://b.mytears.org/2005/03/136 으로 연결시켜주는 역할을 합니다. (이 url 의 경우 개인적으로 심혈을 기울여 수정했음에도 봐주는 이가 없어서 -_-! 밀어주기를 위해 이런 예제에 자주 사용할겁니다. 캬캬)

# For a site running on port 80 (http)
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^wp-(admin|login|register)(.*) https://%{SERVER_NAME}:10001/wp-$1$2
[L]

80번 포트로 들어오는 요청 들 중에 wp-admin, login, register 등과 관련된 것들에 한해서 https 로 리다이렉션 시킵니다. %{SERVER_NAME} 뒤에 :10001 이 붙은 것은 제 https 서버가 10001 포트에서 돌고 있기 때문입니다.

RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

지금까지 조건에는 해당되지 않은 경우들 중에 실제 서버에 있는 파일이나 디렉토리에 대한 요청이 아닌 경우 index.php 파일을 불러오게 됩니다. wordpress 의 fancy url 을 사용하는 경우를 위한 설정이 되겠습니다.

간단하죠? ;)