ssl에 관련하여 질문드립니다.

익명 사용자의 이미지

몇 가지 궁금한 점이 있어서 글을 올립니다.

리눅스머신에서 다음과 같은 환경 설정을 했습니다.

open_SSL 설치

/tmp에 open_ssl 소스를 풀고 그 디렉토리로 가서
./config --prefix=/usr/local --openssldir=/usr/local/openssl
./make
./make test
./make install

vi /usr/local/openssl/openssl.cnf

CA_default 부분에다가 /usr/local/openssl/MyCA 수정

usr_cert부분의 nsCertType에서 필요한 부분을 열어준다(#제거)
server 랑 client email objsign

keyUsage 부분의 #을 풀어준다.

mkdir /usr/local/openssl/MyCA
mkdir /usr/local/openssl/MyCA/certs
mkdir /usr/local/openssl/MyCA/crl
mkdir /usr/local/openssl/MyCA/newcerts
mkdir /usr/local/openssl/MyCA/private
echo "01" > /usr/local/openssl/MyCA/serial
touch /usr/local/openssl/MyCA/index.txt

rootCA의 비밀키 생성
openssl genrsa -des3 -out ca.key 1024

self sign한 인증서 생성
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

cp ca.key /usr/local/openssl/MyCA/private/cakey.pem
cp ca.crt /usr/local/openssl/MyCA/cacert.pem

패키지 풀기(apache, mod_ssl, php를 /tmp에 푼다)

위의 3개 꼭 >tar zxvf [filename] 형태로 푼다.

cd apache-1.3.x
./configure

$ cd mod_ssl-2.6.2-1.3.12
$ ./configure \
--with-apache=../apache_1.3.12
$ cd ..

# PHP를 컴파일 하기 전의 아파치 사전 설정
$ cd apache_1.3.12
$ ./configure \
--prefix=/usr/local/apache <= 설치할 곳
$ cd ..

# PHP컴파일 하기 (DB,imap,gd,apache)
$ cd ../php-4.0.0
$ CFLAGS='-O2(영문대문자O) -I(영문대문자
I)/usr/local/openssl/include' \
./configure \
--with-apache=../apache_1.3.12 \
--with-mysql=/usr/local/mysql \ <= 사용자가 설치한 위치
--enable-memory-limit=yes \
--enable-debug=no
$ make
$ make install
$ cd ..

# Apache 와 mod_ssl, PHP3, etc...컴파일하기.(마무리 하기)
$ cd apache_1.3.x
$ SSL_BASE=/usr/local \
./configure \
--prefix=/usr/local/apache \
--enable-module=ssl \
--activate-module=src/modules/php4/libphp4.a \
--enable-module=php4
$ make
$ make certificate
(상식 수준에서 설정...Common Name은 공인_IP를 넣어준다. 나중에
만들어도 될거 같은데...)
$ make install

Ⅳ. /usr/local/apache/conf/httpd.conf 파일을 수정
특정 포트(443)로 들어오는 것만 보안 웹엔진을 기동시키려고 합니다.

① Section 1 (Global Environment)부분에서
Listen 192.168.1.180
Listen 192.168.1.1443
Listen 외부_IP443
추가

② Section 2 부분에서 Port 80 인지 확인

ServerName 192.168.1.1
ServerName 외부_IP

ServerAdmin 부분을 수정(잘 알아서 하자...문제가 있을때 멜로 날라오니
까..)

③ Section 3 부분에서

SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
DocumentRoot /usr/local/apache/htdocs_ssl_out
ServerName [외부_IP]
ServerAdmin zip90028@infino.co.kr
ErrorLog /usr/local/apache/logs/error_log
TransferLog /usr/local/apache/logs/access_log
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLVerifyClient 2



SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
DocumentRoot /usr/local/apache/htdocs_ssl
ServerName 192.168.1.1
ServerAdmin zip90028@infino.co.kr
ErrorLog /usr/local/apache/logs/error_log
TransferLog /usr/local/apache/logs/access_log
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLVerifyClient 2


저장후 나온다.

443포트에 대한 디렉토리 설정

mkdir /usr/local/apache/htdocs_ssl
mkdir /usr/local/apache/htdocs_ssl_out
두 디렉토리 안에다가 필요한 html파일을 넣어준다.

#하나의 리눅스 머신안에 웹서버와 rootCA가 같이 있는 형태입니다.

웹서버의 비밀키 생성
openssl genrsa -des3 -out server.key 1024

웹서버가 rootCA에 보낼 인증요구서 생성
openssl req -new -days 365 -key server.key -out server.csr

rootCA가 웹서버에게 줄 인증서를 생성
openssl ca -in server.csr -out server.crt -
config /usr/local/openssl/openssl.cnf

웹서버의 키와 인증서를 다음에 위치시킨다.
cp server.key /usr/local/apache/conf/ssl.key/server.key
cp server.crt /usr/local/apache/conf/ssl.crt/server.crt

###
이 다음에 클라이언트(브라우저익스플로어)를 위한 인증서를 만들고 그
인증서와 rootCA의 인증서를
클라이언트에 설치해야 하는데(위의 설정 중에서 SSLVerifyClient 2라는
옵션때문에) rootCA인증서는
인증서 설치 마법사를 통해서 설치를 했는데 클라이언트의 인증서를 어떻
게 만드는 지에 대한 방법과
클라이언트의 인증서도 똑같이 인증서 설치 마법사를 통해 어느부분에 설
치를 해야 하는 지 몰라서 글을 올립니다.

답변 꼭 부탁드립니다.
###

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.