인터넷

SSL방식 보안 웹페이지 방법

암호화통신을 하기 위해서 보안프로토콜을 호출하는 방법은 OS나 Program 언어를 가리지 않고 모두 동일합니다. 그 이유는 암호화 통신을 하기 위해 적용하는 부분이 특정 OS나 특정 Program 언어에 의존하지 않는, 모두가 공통으로 사용하는 HTML 언어이기 때문입니다.

본 절에서는 암호화 적용 범위에 따라 웹페이지 전체 혹은 일부를 암호화하는 방법과 이용자가 선별적으로 암호화를 선택하는 방법을 소개하겠습니다.

 

SSL방식 보안 웹페이지 보안안내
SSL방식 보안 웹페이지

 

1 전체 페이지 암호화하기

 

1) https 프로토콜 호출하기

https 프로토콜을 호출하여 웹페이지 전체에 적용하는 방법은 그림만으로도 곧바로 이해를 할 수 있을 정도로 아주 쉽습니다. 간단히 호출하는 프로토콜을 http://에서 https://로 수정 하시면 됩니다.

 

2) 리다이렉션(Redirection) 설정

앞서 설명을 하였듯이, 암호화 통신을 위해서는 https 프로토콜을 직접 호출을 해줘야 합니다. 하지만, 대부분 도메인을 웹 브라우저의 주소창에 직접 입력하여 접속하는 경우가 대부분일 것입니다. 이때 웹 브라우저는 해당 도메인 앞에 http://가 붙은 것으로 판단하고 평문 통신을 하도록 합니다. 평문 통신을 하는 경우라면 문제가 없지만, 암호화 통신을 해야 할 경우에는 https://를 직접 붙여서 입력해야 하므로 불편할 뿐만 아니라 입력하지 않은 경우 암호화 통신이 이루어지지 않을 수 있습니다.

리다이렉션은 현재 접속한 도메인이나 혹은 웹페이지를 강제로 다른 주소나 다른 페이 지로 변경해 줌으로써 사용자들의 불편함을 감소시켜 주고 자연스럽게 암호화 통신을 할 수 있도록 해주는 기능입니다.

 또 다른 방법으로는 OS나 Web Programming 언어의 종류에 상관없이 모두 공통적으로 사용하는 HTML tag를 이용한 방법으로써, 어떤 경우에서나 적용이 가능하기 때문에 가장 많이 이용되고 있습니다. 

 

Meta tag를 이용하는 경우, 1초 정도 깜박하는 현상이 나타나기 때문에 종종 Javascript를 이용하기도 합니다.

Meta tag를 이용한 방법은 html Redirection 방법과 동일하게, 사용자들이 익숙하게 접속하는 index 페이지에 삽입해 두면, 사용자들이 불편하게 https://라는 프로토콜을 특별히 지정해 주지 않아도, 보안을 위해서 암호화 통신이 적용되어 리다이렉션 해주게 됩니다.

 

 

2 페이지별 암호화하기

 

페이지별 암호화는 현재 위치하고 있는 페이지에서 다른 페이지로 이동할 때, 보안을 위해서 암호화된 전송을 할 것인지 아니면 평문 전송할 것인지를 선택하여 암호화하는 것을 말합니다.

부분적인 페이지 암호화를 사용하는 이유는 암호화 적용이 필요 없는 부분까지 암호화를 하여 서버의 부하를 증가시키는 것을 최대한 줄일 수 있기 때문입니다.

‘서버 관련 강좌 & TIP’ 메뉴를 클릭하여 이동을 하면 https가 호출되어 서버와 클라이언트 간의 통신이 암호화되어 전송되고, ‘Q&A’ 메뉴를 클릭하여 이동하면 http가 호출되어 서버와 클라이언트 간의 통신이 평문으로 이루어지게 하는 방법도 있습니다.

이렇게 페이지별로 암호화가 적용된 사이트를 방문해보면,  경고창을 만나게 되는 경우가 있습니다.

이 경고창이 뜨는 것은 암호화 통신을 유지하기 위해서는 웹페이지 내의 모든 URL의 호출이 https://로 이루어져야 하나, http:// 즉 평문 통신을 위한 웹페이지 URL이 포함되어 있다는 것을 의미합니다.

이런 경고창이 발생하는 웹페이지 속성을 보면 ‘암호화 안됨’이라고 해서 마치 암호화가 되지 않은 평문 상태로 데이터가 전송되는 것처럼 생각되지만 웹페이지 상 전송되는 데이터를 볼 수 있는 third-parth 툴을 이용해서 확인해 보면, 암호화 통신이 이루어지고 있다는 것을 알 수 있습니다.

경고창이 발생하게 되면, 상세한 내용을 모르고 웹사이트에 접속하는 사용자들에게 보안이 되고 있지 않다는 불신을 줄 수도 있고, 또한 계속적인 경고창 으로 인해서 불편해 할 수 있으므로 가급적 발생하지 않도록 웹 페이지 내의 모든 URL을 https://로 바꿔주는 것이 좋습니다.

만일 절대경로로 호출하는 것이 아니라, 상대경로로 호출하는 것이라면 소스를 변경하지 않아도 됩니다.

 

*참고 : 절대경로와 상대경로

절대경로 호출과 상대경로 호출이란 무엇인가?

절대경로란 내가 열어보고자 혹은 내가 가고자 하는 웹페이지의 경로를 전체적으로 기술하는 것이고, 상대경로란 내가 현재 있는 위치를 기준으로 내가 열어보고자 혹은 내가 가고자 하는 웹페이지의 경로를 기술하는 것을 말합니다.

.

 

 

3 프레임별 암호화하기

 

SSL을 이용한 보안포트(443)를 웹페이지에 적용하는 방법을 앞서 소개하였습니다. 단순히 http를 https로만 바꾸어주면 보안포트를 이용해서 암호화 통신을 할 수 있었습니다.

하지만, 프레임이 삽입된 웹페이지의 경우에는 약간 적용하는 방식이 다르기 때문에 소개 하고자 합니다. 프레임이 적용된 페이지를 이용하면 암호화된 페이지와 비 암호화된 페이지를 각각 적용시킬 수 있습니다.

 

1) 비암호화 통신(http)를 이용해서 호출하기

 topmenu..htm과 main.htm을 모두 소스를 이용해서 호출한 경우입니다. 이 경우에는 모든 정보가 암호화되지 않고 그대로 노출됩니다.

다음으로는 소스코드를 적용하여 topmenu.htm만을 https로 호출을 하는 경우입니다.

프레임을 이용하여 호출하는 경우에는 암호화되지 않는 index.html (네모박스)의 내용과 main.htm의 내용만이 80 포트로 텍스트 전송되는 것을 확인할 수 있습니다. topmenu.htm의 내용은 암호화 전송되기 때문에 평문 전송되는 80 포트에서는 내용을 알 수 없습니다.

 

마지막으로 index.html을 제외하고 모든 프레임내의 호출 페이지를 https를 통해서 호출하게 될 경우에는 index.html의 내용만 평문으로 전송이 되고, 나머지 topmenu.htm과 main.htm은 암호화되어서 전송됩니다

 

 

2) 암호화 통신(https)을 이용해서 호출하기

앞에서와 같은 절차를 이용해서 https를 이용해서 호출을 하게 되면, 프레임을 포함하고 있는 index.html은 URL을 https로 호출을 하게 되므로, 항상 암호화가 되어지고, topmenu.htm과 main.htm은 암호화 적용 여부에 따라서, 평문 통신 또는 암호화 통신이 이루어집니다.

 

웹 브라우저에서 https를 통해서 호출한 index.html의 내용은 암호 화되어 통신이 이루어지기 때문에 80포트를 모니터링하였을 경우에 그 내용이 보이지 않지 만, index.html 안에 있는 프레임을 통해서 http로 호출한 topmenu.htm과 main.htm은 https 통신을 통해서 index.html을 호출했지만, 평문으로 통신이 되는 것을 확인할 수 있습니다.

 http로 호출된 웹페이지는 암호화 통신이 이루어지지 않고 있는 것을 알 수 있습니다. 이와 같이 프레임을 이용하면, 필요에 따라서 한 페이지에서 암호화가 제공되는 부분과 암호화가 제공되지 않는 부분이 공존할 수 있도록 구성할 수 있지만, 앞서서도 이미 언급했듯 이 아무리 웹 브라우저에서 https를 이용해서 호출을 했어도 프레임으로 불러오는 페이지가 http 주소를 가지고 있을 경우에는 암호화가 되지 않고 정보의 노출이 발생할 수 있으므로, 프레임이 사용되는 페이지를 암호화를 위해서 https로 호출하고자 할 때에는 꼭 확인을 해보시기 바랍니다.