'98..Etc'에 해당되는 글 370건

  1. 2009.01.08 Openbravo ERP installation
  2. 2009.01.08 소스 ERP 솔루션
  3. 2009.01.06 Process Explorer v11.31
  4. 2009.01.06 Windows 2003 서버의 터미널서버 접속 라이센스가 없다고 나올때
  5. 2009.01.05 터미널 서비스 클라이언트의 라이센스 만료시 대처방법
  6. 2008.12.30 네이버 지도 이용하기 openapi map
  7. 2008.12.29 구글 차트(Google Chart) API
  8. 2008.12.15 C 프로그래밍에서 MySQL을 사용하기 위한 준비
  9. 2008.12.15 어제 오픈한 네이버 개발자 센터 오픈소스 프로젝트들.
  10. 2008.12.10 웹 사이트를 유지보수 가능한 상태로 만들기
  11. 2008.12.10 GlassFish v2에서 SSL 사용하기
  12. 2008.12.09 이클립스 3.3으로 GlassFIsh 구동하기
  13. 2008.12.09 GlassFish Community
  14. 2008.12.09 anybuilder vx (모바일용 프로그램 만들기)
  15. 2008.12.07 [Error] :: Address already in use: JVM_Bind:8080
  16. 2008.12.07 [oracle] ORA-01841: 년은 영이 아닌 -4713 과 +4713 사이의 값으로 지정해야 합니다
  17. 2008.12.01 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
  18. 2008.12.01 무료 개발툴
  19. 2008.12.01 samba 서버 설치
  20. 2008.12.01 정통부, 보안서버 구축 가이드 배포
  21. 2008.12.01 보안서버 SSL 구동시 비밀번호 자동 입력 및 부팅시 자동 시작
  22. 2008.12.01 SSL 보안인증서 설치
  23. 2008.12.01 보안서버 설치
  24. 2008.12.01 보안서버 구축 가이드
  25. 2008.11.28 Not Clickjacking (Almost Certainly)
  26. 2008.11.28 [잡팁]XP에서 드라이브의 이름 변경하기
  27. 2008.11.28 ms 동영상 강의 (강추) C++, Visual C++ 외 다수 1
  28. 2008.11.27 Apache 설치방법 보기
  29. 2008.11.26 왕초보, 왕비초보를 위한 PHP 개념정리 ”
  30. 2008.11.25 국내 Open api 리스트 및 링크
98..Etc/ERP2009. 1. 8. 14:43
반응형

Openbravo ERP installation

Rating :
5.00/5
(3 votes cast)
You have to be registered to be able to vote

Contents

[hide]

Introduction

Important note: this document applies to versions 2.35 and 2.40 of Openbravo ERP

This article explains how to install Openbravo ERP.

Before getting started, please make sure that you have properly installed the Openbravo environment, i.e.:

Take a look at the specifications for the correct versions.

Important notes:

Openbravo ERP can be installed in two different ways:

License

Openbravo ERP is licensed under the Openbravo Public License Version 1.1:

The contents of this file are subject to the Openbravo Public License Version 1.1 (the "License"), being the Mozilla Public License version 1.1 with a permitted attribution clause; you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.openbravo.com/product/legal/license/.

Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.

The Original Code is Openbravo ERP. The Initial Developer of the Original Code is Openbravo SL. All portions are Copyright (C) 2001-2008 Openbravo SL. All Rights Reserved.


Subversion source code

To be able to check out Openbravo ERP source code from Openbravo Subversion repository you need to install Subversion (SVN) version control system client.

Once Subversion client is installed, move to the directory where you want to check out last source code tag and type in command line:

svn co https://dev.openbravo.com/svn/openbravo/tags/r2.40 openbravo-240

Move to openbravo-240 directory and configure Openbravo.properties and log4j.lcf files using the graphical assistant (wizard) inside the config/setup-tool directory:

  • Linux: setup-properties-linux.bin
  • Windows: setup-properties-windows.exe

Note that these wizards can also be run in a text mode without a graphical system. This is autodetected.

Before starting with compilation, please check that Openbravo.properties and log4j.lcf files (inside config directory) have been properly configured. If not, edit them manually.

Create the database from *.xml files and install Openbravo ERP in a single step by typing in command line:

ant install.source

Finally, deploy openbravo.war file to Apache Tomcat context directory (usually webapps) by typing in command line:

ant deploy

If you are using PostgreSQL database, before Openbravo ERP can be accessed properly, it is necessary to clean up the database using the following command:

vacuumdb -f -z -h hostname -d dbname -U username

Replace hostname with the actual hostname of your DB server, dbname with the database name (by default openbravo), and username with the name of the DB user (by default tad).

Bitrock installer

Download the latest Openbravo ERP Installer.

  • If using Windows, double click on it.
  • If using Linux, make it executable and run it:
chmod +x OpenbravoERP_2.40-linux-installer.bin
./OpenbravoERP_2.40-linux-installer.bin

An installation assistant (wizard) pops-up:


Read and accept Openbravo Public License Version 1.1 before proceeding with the installation process.

By clicking on Forward button the terms and conditions of this license are agreed.


Indicate the directory where Openbravo ERP is going to be installed.

After clicking on Forward button, select also the directory for attachments.


Then choose the installation type:

  • A Complete installation including database and application.
  • A Distributed installation selecting only one of the components.


The Complete installation, offers two modes:

  • Standard: The database is created and the application is installed. This is the quickest installation and it is recommended for getting started with Openbravo ERP.
  • Development: The database is created, the application is compiled and the generated files installed. This installation is slower but it's recommended for developers.


Provide the directory where Java Development Kit (JDK) is installed.

If the JDK has been properly installed, installation directory should be recognized automatically.


Provide the full path of the Apache Ant binary.

If Apache Ant has been properly installed, the binary path should be recognized automatically.


Provide the directory where Apache Tomcat is installed.

If Apache Tomcat has been properly installed, installation directory should be recognized automatically.


Indicate which database you want to use.

Currently, Oracle and PostgreSQL are supported.


Provide the full path of the database binaries.

These binaries are psql, vacuumdb and pg_restore in PostgreSQL, and imp, sqlplus in Oracle's case.


Provide the database parameters that allow the installer to connect with the database. Your database must be running during this step since database credentials are verified. The following parameters are required:

  • Database host: The IP address or the host name where database service is running.
  • Database port: The port that database service is listening to (By default, 5432 in PostgreSQL and 1521 in Oracle).

After clicking on Forward button, if using an Oracle database, SID (Oracle System Identifier) and TNS (Transparent Network Substrate) will be required.


In the next window, if using PostgreSQL database.

Type twice the password for the postgres administrator user. If using Oracle database type twice the password for the system user. Actually, Openbravo ERP requires administrator privileges to create database elements.


If using PostgreSQL:

Specify the name of the database that will hold Openbravo ERP data model. Then type the database username and password that will contain Openbravo ERP database objects.


Give a context name to your application.

This will be used to access Openbravo ERP through Tomcat: http://<ip_address>:<port>/<context_name>


Next, select the preferred date and time format:


Finally, choose between having demo data (BigBazaar) or not:


Click Forward twice to go ahead with Openbravo ERP installation.

This process may take 10-30 minutes for the Standard mode and 30-90 minutes for the Development mode, depending on the processing capabilities of the machine where Openbravo ERP is being installed.


Running Openbravo ERP

In both cases, stop and start Tomcat service to finish installation process.

At this point, you should have inside Apache Tomcat webapps directory (C:\Apache Software Foundation\Tomcat5.5\webapps\ or C:\Tomcat5.5\webapps\ in Microsoft Windows and /var/lib/tomcat5.5/webapps/ in Linux):

  • your_context_name.war file.


If this is not the case:

  • Stop Tomcat service.
  • Copy your_context_name.war file from lib directory of the installation.
  • Paste it into Apache Tomcat webapps directory.
  • Start Tomcat service again.


Access Openbravo ERP via your web browser by typing the exact context URL, for instance, http://localhost:8180/openbravo/.

Check that your_context_name directory is created inside Apache Tomcat webapps directory.


Important notes: Error HTTP Status 404 - File not found page instead of Login page reveals a problem with the context URL. For both cases, please make sure that you correctly typed the URL. Write a URL in the form:

http://hostname:port/context_name

For example:

http://localhost:8080/openbravo


Type Openbravo in Username text box and openbravo in Password text box. Then click on Login button.


Congratulations! You are done with Openbravo ERP installation :)


Important note: Please notice that first log in is done with System Administrator role so you will not be able to see business options (message AccessTableNoView will display instead) but only administration tasks. In order to access business partners, products, sales and procurement orders and so on, change your role to BigBazaar Admin (or Openbravo Admin) by clicking on Openbravo link (left up) image:ChangeRole1.png and selecting it in Role information pop-up window. You can also set this role as default by checking Set as default check box.


Configurations after installation

After Openbravo ERP is properly installed and running, there are a few parameters that you can customize to adapt better Openbravo ERP to your country or region.


Installing a translation

It is always more fun to get Openbravo ERP translated into your language :)


Configuring the default date and time formats

To change the default Openbravo ERP date format launch the setup tool inside the config/setup-tool directory.

Once all the changes are done, recompile and deploy Openbravo ERP:

ant compile.complete
ant war
ant deploy

Configuring the default numbering format

You can modify the default numbering format by editing the Format.xml file inside config directory. You should have decimal="." grouping="," for every category. Once this is done you will have to restart Tomcat and the reports will show as you wish.


Known issues

Here is a list of common issues with Openbravo ERP installation. You could also find your problem at Openbravo environment installation issues.


Tomcat hot-deployment problem on Windows

There is a known issue with Tomcat working under Windows. Openbravo ERP does a hot-deploy of openbravo.war file to Tomcat but on Windows it often encounters file locking issues. Windows will not let Tomcat undeploy the old application because files are locked by the Operating System. Tomcat has mechanisms to allow avoiding locking. In Tomcat 5.5 and 6.0, this mechanism is disabled by default. To enable it edit %CATALINA_BASE%\conf\context.xml. Find the root <context> and add these two attributes:

<context antiJARLocking="true" antiResourceLocking="true" />


Jasper Reports Issue

When compiling the source code, the application server needs Internet connection in order to compile successfully the *.jrxml files. If not, the Jasper reports will not work on the application.

In Windows, firewalls could also block Jasper reports compilation so turn them off temporarily.

The header of these .jrxml files is like:

<?xml version="1.0" encoding="UTF-8"  ?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

If the application server does not have Internet connection, you will have some errors while compiling the sources even if the build is successful. When you call one of these reports in the application, you will get something similar to this:

org.xml.sax.SAXParseException: Premature end of file.

If you edit all the jrxml files (up to 58) and delete the line where it calls the Internet connection,

<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

the compilation will report no errors, but the translation will be done badly, and when calling one of these reports in the application, you will get an error window:

Language "null" not supported by this report compiler. Expecting "java" instead.

So, the final solution for this issue is to replace the line

<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

by this one

<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "/tmp/jasperreport.dtd">

in all 58 .jrxml files in order to avoid the contact with the previous URL, and so the compilation and the application reports will work well.


Unsatisfied Link Error executing a Jasper Report

In some Linux distributions there is a problem using Java SDK 1.5.0_13 or 1.5.0_15 and Tomcat running as a daemon [jsvc]. When a Jasper Report is launched an error appears indicating that it cannot find a library. The easiest way of fixing it is editing /etc/init.d/tomcat script and export the variable LD_LIBRARY_PATH to the path where the library (libawt.so) is located.

For example:

LD_LIBRARY_PATH=/usr/lib/jvm/java-1.5.0-sun-1.5.0.13/jre/lib/i386/
export LD_LIBRARY_PATH

In Ubuntu there is a shorter path which works on all subreleases of 1.5 (i.e. 1.5.0_13 and 1.5.0_15). It is using a symbolic link which automatically points to the correct directory:

LD_LIBRARY_PATH=/usr/lib/jvm/java-1.5.0-sun/jre/lib/i386/
export LD_LIBRARY_PATH


Jasper Reports environment variable

In some configurations to make the JasperReports work, you need to add to environment variable CATALINA_OPTS the parameter -Djava.awt.headless=true. The CATALINA_OPTS should look something similar to CATALINA_OPTS ="-server -Xms384M -Xmx512M -Djava.awt.headless=true"


Internet Explorer 6

The main problem is that IE6 does not support PNG with alpha channel. IE7 and Mozilla Firefox do.

First solution: replace PNG images with GIFs

  • It is not possible just to replace PNG images with GIFs, because PNG have for every pixel an alpha channel, but GIF don't. GIF supports only a subset of 256 colors, but that's not the biggest problem. With GIFs you just have the possibility to define a color as full transparent or not. That means that a gradient from black to transparent is impossible.

Second solution: avoid using transparencies

  • This implicates that overlaying images could not be used. For example an icon in the toolbar, has an a rounded rectangle background on hover and on press. The usage is easy now, because we can overlay these images with the icon. But without transparencies we would need 3 different icons. Three times the same with different backgrounds. That requires a lot of icons to be build.
  • The problem in this case is not only that we have to rebuild all icons with every possible backgrounds, the problem is also on the implementation side of reconstructing your structure of HTML and CSS.

Third solution: filters

We have tried several filter solutions but it can not be applied without a big change of css and html files.

So the only feasible solution would be build a new skin with gif images, loosing interface quality. You can find info about how to build a new skin.

You always also have the choice of install Mozilla Firefox or update to IE7 (if you are a Windows XP user).


Openbravo ERP FAQ

Openbravo's ERP Frequently Asked Questions (FAQ).

Summary

Openbravo ERP installation should not present any other special problem if Openbravo environment has been properly installed before.


Support

For any question or doubt regarding Openbravo ERP installation, post them in Openbravo Help forum or join #openbravo IRC channel in Freenode.

Retrieved from "http://wiki.openbravo.com/wiki/Openbravo_ERP_installation"

This page has been accessed 130,153 times. This page was last modified 15:42, 24 November 2008. Content is available under Creative Commons Attribution-ShareAlike 2.5 Spain License.


Category: Installation
Posted by 1010
98..Etc/ERP2009. 1. 8. 14:20
반응형

지속된 뒤로 물러나라 비용을 들이는 야기하고 미끄러지고 열심히이어라 해라 headquartered 가져라 가리키고 가진다 영향을 받는 서명해라 미뤄라 설명한다 비용을 들이고 가진다 담그는 중에(위)에(위)에 예를 들면 안에(위)에 안에 불확실하게 최근 재무 얼마나 극적으로 단지 그들의 이것들 시간 다수 조직 그것 어떤 것 소프트웨어 vendor 주식 warnings. 회사 Waldorf Germany 그것 위기 능력 계약 그 만큼 고객 그것 투자 hold.  이것 기업 응용 약간 주 일찍 있다.

대부분의 조직은 비용이 대개 ERP 솔루션을 실행하기에 매우 높고 지루하고 많은 시간과 넣을 많은 노력을 필요로 한다고 생각한다. 이들 시간에 most  조직은 어느 것이 있다 대체 소프트웨어 솔루션을 찾고 있을 수 있다:

  • 비용에(서)더 낮은
  • 여러 면에서 융통성이 있는
  • 큰 한 무리의 사용자를 가지기
  • 솔루션 공급자(위)에 부양 가족이지 않기

결점에 대응하기 위해 above 열려 있는 말한 소스 ERP 솔루션은 대답일 지도 모른다. 열려 있는 소스 ERP 솔루션을 가지고 회사가 솔루션을 다운로드할 수 있고 회사에게 맞는 비즈니스 요건에 따라 그것을 사용자의 요구에 맞출 수 있다. ’s 비즈니스 흐름과 과정. 대부분의 시간 이행과 이들 솔루션의 사용자는 유형의 ERP 솔루션이 아래에(서)나오는 모델을 인가하는 것에(게)유일하게 묶인다.

당신의 조직이 조직 안에서 비즈니스 과정에게 가장(잘)맞는 ERP 솔루션을 실행할 계획이라면 다음은 평가하고 실행하기에 좋고 입증한 열려 있는 6 (6)소스 ERP 솔루션이다:


Compiere은 기업 자원 기획(ERP)와 고객 관계 경영(자)(CRM)을 더 쉽게 만듬으로써 기업 응용의 경제학을 바꾸고 있다. 얻기 더 쉬운. 실행하기 더 쉬운. 퍼져 있기 더 쉬운. 변하기 더 쉬운.

Compiere은 다음 모듈과 능력을 지지한다:

  • 기준이 된 리포트 - 이 당신의 기업의 수행을 알리고 기준이 된 리포트와 통합된 보고 도구를 이용해서 관리한다.
  • 비즈니스 뷰는 최대한으로 활용된 보고 스키마를 통해 ecurely 액세스 비즈니스 데이터를 층지게 한다.
  • 셋째 파티 분석은 Compiere ERP와 CRM 데이터를 분석할 제3 보고와 분석 도구의 당신의 선택 se을 세공한다.
  • 물질적인 기획과 생산 스케줄링과 가게 바닥 실행 능력과 더불어 ontrol 제조 오퍼레이션을 생산하기.
  • 지불에 대한 획득으로부터 스텝 utomate을 사기.
  • 재료 경영(자)anage은 수입금과 선적과 이동과 당신의 창고와 공급자와 고객을 건너서 카운트를 요약하여 서술한다.
  • 오더 경영(자)이 인용문을 reate 책 오더가 재료를 관리하고 송장을 만들어 내고 현금을 모은다.
  • 세계적인 재무 ne 경영 시스템이 당신의 비즈니스 솔루션의 과정을 자동화하고 당신의 재무 기록을 관리한다.
  • 당신의 귀중한 고객 관계 경영(자)솔루션 매출 ontrol.
  • 안전한 웹 스토어 앞쪽을 달려라 그리고 전자 상거래가 reate.
  • 전체 서비스 배달 라이프 사이클 anage에 서비스한다.
  • 당신의 고객과의 상호작용의 360 도 뷰 고객 역사 ee.

Compiere은 현재 서비스 다수의 산업에(서)조직에 의하여 retail 즉 분배,재무 서비스,건강 관리,제조,출판사업을 이용하고 전문적이다. Compiere은 많은 성공 이야기를 가진다. 그들의 고객 중의 한사람은 2008의 as Compiere이 10,000 이상의 SKUs을 건너서,50 이상의 자회사와 채널 파트너를 통해 품목일람과 배열과 선적과 회계 과정을 관리할 수 있다고 말하였다.


Openbravo은 명확하게 솔루션 SME(midsize 회사에(게)작은 부분)을 위한 것인 공개자료 ERP이다. 웹에 기초를 둔 환경에(서)그것이 광범한 ERP의 부분이라고 생각된 많은 튼튼한 기능을 포함한다 개발된다: 획득과 창고 경영(자)와 프로젝트와 서비스 경영(자)와 생산 경영(자)와 재무 경영(자).

Openbravo ERP은 다음 모듈과 능력을 지지한다:

  • 재료의 빌,데이터 경영(자)-  제품,성분,고객,판매자,직원을 정복해라
  • 획득 경영(자)- 은 구매가 오더를 한다 제품 수입금과 송장 등록과 회계를 구매 기획으로 간주한다.
  • ��
  • 경영(자)-  프로젝트와 단계와 일과 자원과 예산과 비용과 비용을 계획하고 작성하는 관련된 산 물건 서비스한다.
  • 생산 경영(자)- 은 생산 계획,구조,BOM을 심는다. ’생산의 비용,제조 오더,일 리포트,일 발생,s,MRP,예방적인 유지보수 타입
  • 판매 경영(자)와 고객 관계 경영(자)CRM -  Prices,변화하는 양 판매 오더,레이트,선적 볼륨 할인,커미션,CRM 작성하기
  • ��
  • 비즈니스 지식(BI -  보고,다면적인 분석(OLAP))은 득점표의 무게를 쟀다.

최근에 Openbravo이 Category.  Openbravo이 기술 섹션에(서)나타나서 있는 혁신에(서)Volkswagen와 Acciona와 CINFA와 같은 다른 훌륭한 회사와 나란히 알아보아서 주요하다고 말한 스페인 비즈니스 잡지에 의하여 수여되었다.


xTuple PostBooks 판은 xTuple ERP 스위트를 얻어서 상에 따라 완전한 특별히 다루고 완전히 통합된 회계,ERP와 CRM 시스템이다.

C++을 위해 그것이 비즈니스와 산업의 범위를위해 파워와 융통성에(서)최종 단계를 제공한다 공개자료를 가지고 틀 PostgreSQL 데이터베이스와 공개자료 Qt을 세웠다. 그것은 다음 모듈을 포함한다:

  • 회계-전반적인 원장은 뱅크 화해,재무 보고를 믿을 만 하고 지급 가능하다고 생각한다.
  • 매출-주문 엔트리,판매 보고,인용문,선적
  • 보편적인 CRM - 주소록,사건 경영(자),기회 경영(자),일정 목록,프로젝트 경영(자)
  • -  구매주문서,받기,판매자 보고를 사기
  • 제품 정의-아이템,무한한 균일한 재료의 빌(BOM)
  • 다중 -  위치,다른 앞선 창고 특징을 요약하여 서술해라
  • 메이크가 오더를 하도록 제조 -  일 오더,강한 지원을 밝혀라
  • 열려 있는 OpenRPT - 소스 리포트 작가

모든 xTuple 제품처럼 PostBooks이 잘 윈도즈와 리눅스와 맥(위)에 동일하게 달리고 다중 세금 구조에 대한 지원과 multi-currency와 xTuple에 의하여 유지해 진 다국어 번역 팩 완전히 국제화된다. ’세계적인 s community.  PostBooks이 CPAL,OSI 보증된 공통적인 공공의 돌리기 라이센스 아래에(서)인가 받는다.

OpenERP은 열려 있는 소스 기업 경영(자)소프트웨어이다. 그것이 대부분의 기업 필요한 것과 과정을 덮고 통합한다: 서비스 경영(자),프로젝트 경영(자),회계,hr,매출,crm,구매,스톡,생산,마케팅 캠페인.

OpenERP 안에서 모듈이 요건에 따라 추가해 질 수 있다. 있다 사용가능한 모듈 중의 일부 추가한다:

  • 회계와 재무
  • 구매와 획득
  • 인력
  • 제조
  • 품목 콘트롤
  • 매출과 마케팅
  • 더 많은 사람(것) …

OpenERP이 현재 음식 산업과 같은 다수의 산업,뱅크와 보험,경매장,기타 등등   Metrexotic,이국적인 음식 효과적으로 그들의 판매 과정을 자동화하는 OpenERP일 필요성을 전문으로 하는 음식 산업 회사로부터 고객에 의해 사용되고 있다.


ERP5 커뮤니티는 당신의 비즈니스를 경영하는 데에 필요한 모든 특징을 제공한다. 문서관리나 인력 경영(자)이나 회계에(게)고객 관계 경영(자)으로부터 당신은 모든 것이 당신의 소규모 비즈니스를 다음 성공 이야기로 변화시키는 데에 필요한 것을 발견할 것이다.

,

ERP5 ’s 웹에 기초를 둔 플랫폼은 사용자와 관리자가 그것을 이용하고 웹 브라우저 소프트웨어를 통해 만들도록 허락한다. ERP5의 디자인 ’s 사용자 인터페이스는 이렇게 그것을 사용자 우호적인 ERP 시스템으로 만들어서 또한 독특하고 혁신적이다.

뚜렷한 ERP5 판은 ERP와 CRM와 대부분의 중소기업이 이익을 얻을 수 있는 km funtionalities을 제공한다. 그것이 사용자가 일과 ERP 시스템 안에서 스테이터스를 따라가도록 사용자 인터페이스를 최대한으로 활용해서 이동 전화를 통해 또한 ERP5 익스프레스에 접근할 수 있다.


opentaps은 당신의 기업을 위해 완전한 열려 있는 소스 플랫폼이다.   그것의 세련된 특징과 현대적인 건축은 이동하기 쉬운 상호 통신 능력과 built-in 비즈니스 지식 도구와 함께 완전한 ERP와 CRM 솔루션을 포함한다.  이 그것이 과정을 자동화할 수 있다 효율을 어떻게 향상시킬 수 있는지 보고 오늘 opentaps을 다운로드하고 당신의 전체 조직이 더 말쑥하게 그리고 더(잘)작용하도록 도와 준다.

다음은 opentaps 주요 모듈이다:

  • 온라인 스토어
  • CRM
  • 창고 응용
  • Financials
  • 구매
  • 관리상의 응용

당신은 유지하거나 퍼져 있는 데에 어려운 사내 솔루션을 위한 대체로서 또는 비싸고 구부러지지 않은 상업 ERP 솔루션에 대한 대안으로서 또는 당신의 독특한 비즈니스 모델과 과정을 세울 출발점으로서 opentaps을 이용할 수 있다.

JFire은 비즈니스 기업을 위해 새롭고 강력하고 자유로운 ERP와 CRM와 eBusiness와 SCM /SRM 솔루션이다.

JFire은 매우 포괄적이고 유연한 열려 있는 소스 ERP 솔루션이다. 그것이 사이즈 어떤 기업에게도 매우 강력한 분석과 보고와 주문형 옵션을 제공하도록 고안되었다. 이것은 세계적인 큰 사용자 베이스를 가지는 비즈니스와 multi-currency와 multi-language requirements.  JFire이 완전히 자유롭/열려 있을 뿐만 아니라 적은 회사를 지원하는 확장성이 큰 시스템과 함께 소스 소프트웨어가 최신 기술을 이용한다(J2EE 1.4,JDO 2.0이 RCP 3.3을 가린다)대단히 customizable이도록 고안된다 그리고 회사를 제공한다.

다음은 JFire이다. ’s 주요 모듈:

  • 회계
  • 융통성이 있는 가격 구성
  • CRM
  • 스토어 경영(자)
  • 외부의 지불과 배달과의 통합은 상호작용한다.
  • 보고

——————————끝 ———————————–

여기 당신은 평가하고 실행할 좋고 입증한 열려 있는   7 (7)소스 ERP 솔루션 간다. 즐겨라.

중간의 시장 1 개 회사가 공개자료로의 이동을 ERP으로 어떻게 만든 지를 알아내기 위해 공개자료 ERP의 해답 읽힙니까?

당신은 적당한 ERP 전략과 도구가 ERP 실행에 대한 굉장한 이점을 배달할 수 있다는 것을 알고 있었습니까? 이 자유로운 WHITEPAPER - 퍼포먼스 모니터로부터 어떻게 지를 알아내라: 빛의 속도에(서)ERP

또다른 whitepaper 당신이 ERP 개선에(서)주요 추세와 그들이 Forrester - 경쟁에 의하여 배달하는 이점을 배우도록 SMB ERP 고객을 위해 격화된다.

Posted by 1010
98..Etc/Etc...2009. 1. 6. 13:00
반응형

Process Explorer v11.31

By Mark Russinovich

Published: December 10, 2008

Introduction

Ever wondered which program has a particular file or directory open? Now you can find out. Process Explorer shows you information about which handles and DLLs processes have opened or loaded.

The Process Explorer display consists of two sub-windows. The top window always shows a list of the currently active processes, including the names of their owning accounts, whereas the information displayed in the bottom window depends on the mode that Process Explorer is in: if it is in handle mode you'll see the handles that the process selected in the top window has opened; if Process Explorer is in DLL mode you'll see the DLLs and memory-mapped files that the process has loaded. Process Explorer also has a powerful search capability that will quickly show you which processes have particular handles opened or DLLs loaded.

The unique capabilities of Process Explorer make it useful for tracking down DLL-version problems or handle leaks, and provide insight into the way Windows and applications work.



Download Process Explorer (1.6 MB)

 

Run Process Explorer now from Live.Sysinternals.com

Posted by 1010
98..Etc/Etc...2009. 1. 6. 09:22
반응형
 

윈도우 2003 서버는 설치될 때 기본으로 터미널 서비스를 어플리케이션 모드로 설치를 하는데 이렇게 되면 접속하는 장치당 최초 접속으로 부터 90일간의 사용기간을 주고 이 기간이 지나면 접속이 안되게 된다. 물론 돈을 주고 라이센스를 사야하는 경우가 발생하는 것이다. 라이센스 비용이 만만치 않으므로 서버 관리자만 서버를 리모트로 접속할 경우라면(대부분 이러한 경우일 것이다.) 터미널 서버 설치 모드를 관리자 모드로 바꾸어야 한다.

제어판>시스템>원격

에 들어가서 이 컴퓨터의 원격지원을 허용함을 체그하면 관리자 모드로 전환되고 2개의 관리자 세션은 라이센스 없이 영구히 사용할 수 있다. 접속할 사용자를 원격 사용자 그룹에 추가하는 것도 잊지 말자.

마이크로소프트가 터미널 서버 라이센스를 팔아먹고 싶어서 그러는지 2003은 설치시 물어 보지도 않고 어플리케이션 모드로 설치해 버리기 때문에 90일 후에 황당한 경우를 당하게 되고 이렇게 되면 관리자 모드가 뭔지 모른다면 그냥 돈을 내고 라이센스를 사게 되는 것을 유도 하는 것으로 보인다.

일단 접속이 안되는 상태로 되면 설정을 바꿀수가 없게 되는데 이럴때 IDC로 달려가지는 말고 서버에 접속한 적이 없는 다른 사람컴퓨터로 접속하면 일단 접속이 되므로 이를 이용하여 설정을 바꾸면 된다.

Posted by 1010
98..Etc/Etc...2009. 1. 5. 17:00
반응형

터미널 서비스 클라이언트의 라이센스 만료시 대처방법


1. 실행창에서 regedit 실행

2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\HardwareID
로 이동

큰 이미지 보기

3. ClinetHWID의 값을 삭제합니다.

4. 동일한 tree내의 Store폴더 아래의 LICENSE000(폴더)의 키를 삭제


이렇게 한후, 연결을 하면, 터미널 서버로부터 2개월짜리의 임시라이센스를 가져와 레지스트리를 업그레이드합니다.

Posted by 1010
98..Etc/openapi2008. 12. 30. 13:10
반응형
국내 Open API 중의 하나인 Naver API .

그 중에서 가장 인기 좋은(?) Map Open API 에 대해서 구현해 보았다.


사용자 삽입 이미지


Map Open API 키 받기

Open API 를 사용하기 위해서는 Naver 에서 키를 받아야 한다.

주소 : http://openapi.naver.com/register.nhn   에서 키를 받자.

참고 링크 : http://openapi.naver.com/page.nhn?PageId=3_02_2


키 부여


<script type="text/JavaScript"           
          src="http://maps.naver.com/js/naverMap.naver?key=부여받은 NaverMap Key"></script>



뿌릴 부분

<div id='mapContainer' style='width:가로크기 ;  height: 세로크기 '></div>
 
<div id='mapContainer' style='width:300px;height:300px'></div>



객체 생성

var 변수명 = new NMap(document.getElementById('mapContainer'),
                 가로크기, 세로크기 );


var mapObj = new NMap(document.getElementById('mapContainer'),300,300);


표시될 위치 및 ZOOM 레벨 정하기


변수명.setCenterAndZoom(new NPoint(맵 포인트 ), Zoom 레벨 );

Tip : 해당 맵 포인트는 http://mmap.tistory.com/  에서 얻을 수 있다.

mapObj.setCenterAndZoom(new NPoint(321198,529730),3);


확대, 축소 컨트롤 생성

var zoom = new NZoomControl();                 // 컨트롤을 생성
zoom.setAlign("right");                               // 컨트롤 위치 정하기
zoom.setValign("bottom");
mapObj.addControl(zoom);                         // 컨트롤 추가하기

Posted by 1010
98..Etc/Etc...2008. 12. 29. 01:28
반응형
구글 차트(Google Chart) API라는 게 있었군요. 뭐 국내에도 관련 포스트는 많이 있었지만, 정작 사용예를 올려놓은 포스트는 없는 듯해서 쓸데없이; 차트를 몇 개 만들어봤습니다. 먼저 메신저에서 자료수집에 협조해주신 아래 두 분께 감사를...

irk가 공부할 것들
irk가 공부할 것들
http://chart.apis.google.com/chart?cht=p&chs=400x200&chd=t:60,25,10,5
&chl=painting%7Caction%20script%7Cenglish%7Cphilosophy&chco=ff99aa
&chtt=STUDY%21 (가독성 때문에 임의로 행을 나눴습니다. 이하 같습니다)





달팽이 좋아하는 밴드들
달팽이 좋아하는 밴드 및 선호도;
http://chart.apis.google.com/chart?cht=bvg&chbh=50,30,50&chs=500x250&chd=t:78,63,50,40,30
&chl=sister%27s%20barbershop%7Cdelispice%7CJulia%20Hart%7CRadiohead%7CMuse&chxt=y
&chco=99ff66&chtt=dalpoin%27s%20favorite%20bands




저의 160기가 하드의 파티션들;;
저의 160기가 하드의 파티션;;
http://chart.apis.google.com/chart?cht=p3&chd=t:18.6,18.6,31.2,37.2,37.2,0.5,5.99
&chl=C:system%7CD:translation%7CE:down%7CF:music%7CG:game%7CY:ramdisk%7CZ:swap
&chs=400x200&chtt=my%20160gb%20hdd&chco=3366ff




이 블로그 최근 방문자 수
이 블로그 최근 방문자 수
http://chart.apis.google.com/chart?cht=lc&chs=400x200
&chd=t:81.5,82.7,34.4,45.2,50.4,38.3,69.5,45,41.2
&chl=5|6|7|8|9|10|11|12|13&chxt=y&chtt=visitors/10%20(march,%202008)&chco=ff00ff


대충 이 정도입니다만... 사용해본 소감은 일단 엄청나게 불편하다였습니다-_- url만으로 차트 이미지를 만들 수 있다는 점은 분명 매력적이지만(이런 아이디어 자체는 php를 하는 사람이 보기에 사실 전혀 새로울 게 없긴 합니다만), 문제는 그 url을 쳐넣기가 힘들다는 사실이죠. 찾아보니 이미 누군가가 편리하게 html 폼을 만들어놓긴 했더군요. 일반 사용자라면 Chart Maker를 이용하는 것이 이렇게 일일이 url 코드를 직접 작성하는 방법보다 훨씬 편리할 듯합니다.

하지만 이보다 더 본질적인 문제는 사용할 수 있는 자료에 한계가 있다는 점이었습니다. 현재로서 구글 차트 API에 입력할 수 있는 숫자의 범위는 고작 0~4095밖에 안 됩니다. 그것도 복잡한 숫자-문자 변환을 거쳐야만 가능하죠. 그냥 숫자로 입력할 때에는 0.0~100.0이 한계입니다. 때문에 위에서 '이 블로그 최근 방문자 수' 차트를 그릴 때에는 10으로 나누어 입력해야만 했죠. 지금으로선 재미로 사용하는 정도랄까요... 사실 엑스차트와 같은 좋은 국산 서비스도 이미 존재하니까요.

Posted by 1010
98..Etc/C2008. 12. 15. 15:36
반응형
C 언어를 하면서 데이터베이스를 이용해야 할 경우가 있다.
이 때 부담없이 무료로 사용할 수 있는 mysql을 선택한다면!!
mysql은 www.mysql.com 에서 다운 받을 수 있다.

사이트에서 MySQL 5.1 Essentials를 다운 받도록 한다. (mysql-essential-5.1.30-win32.msi)
프로그래밍만을 할 것이라면 다운 받은 파일을 설치할 때 Custom 설치를 선택한 후, 아래와 같은 설치요소 선택화면에서 "C include Files / Lib Files"를 선택하도록 한다.


그리고 필요하다면 설치 경로를 마음껏 변경한다.
참고로 MySQL Server의 설치 경로를 변경하면 나머지 것들도 자동으로 바뀌지만, MySQL Server Datafiles의 경로는 변하지 않았다. 이 경로는 바꾸고 싶다면 따로 변경해야 하는 것 같다.

만약 데이터베이스는 설치하지 않고 외부의 MySQL Server를 이용하여 프로그래밍만 할 거라면 MySQL Server와 Client  Program은 설치할 필요가 없다.

MySQL Server를 설치한 경우는 아래의 추가적인 단계를 거쳐야 한다.
MySQL Server를 설정할 것인지 묻는 화면이 나온다. 서버의 설정은 여기서 하지 않아도 MySQL과 함께 설치된 configuration wizard를 실행하여 다시 설정할 수 있다. 나중에 하기 귀찮다면 바로 연이어 설정하도록 한다.
여기서는 거의 기본값을 이용하였다. 설치 과정은 아래의 그림을 참고한다.


설치 과정이 끝나면 프로그래밍 시 사용할 MySQL 관련 헤더 파일들과 라이브러리의 경로를 설정해야 한다.
Visual Studio 2005 를 사용하는 경우는 아래와 같이 프로젝트 경로를 설정하도록 한다.

"도구 -> 옵션 -> 프로젝트 및 솔루션 -> VC ++ 디렉터리" 에서 아래와 같이 설정한다.
먼저 Include 경로를 설정한다.


다음으로 library 의 경로를 설정한다.


프로젝트를 생성했다면, 메뉴에서 "프로젝트 -> 해당 프로젝트 속성 -> 구성 속성 -> 링커 -> 명령줄" 에 아래와 같이 추가한다.


이제 프로그래밍을 시작할 준비가 되었다!
이제 mysql.h 를 포함하여 프로그래밍을 하도록 한다.
마지막으로 주의할 것은 mysql.h 를 포함할 때 SOCKET 관련 에러가 발생하기도 한다. 이 때 SOCKET 을 아래와 같이 define 해주거나 관련 헤더를 포함하도록 한다.

#define SOCKET int

그럼 이제 MySQL 프로그래밍을 시작하자~


테이블 생성 등의 기본적인 MySQL 구문은 검색을 통해 금방 찾을 수 있다.
그러나 참고로... 무책임하게... 무단으로 링크를 하나 걸어두도록 한다..
마음에 드는 자료인데 잊어버릴까봐.. ㅠ_ㅠ


(혹시 문제가 되면 삭제 할께요 ㅠ_ㅠ)

IBM 에서 찾은 자료도 탭을 그냥 닫아 버릴 수가 없었다..;;;



찾은 자료들을 모두 즐겨찾기 해봐야 보지 않기도 하고, 극악의 카테고라이징 스킬로 나중에 알아보기 어려우므로...
자꾸 웹 브라우저의 탭을 닫지 않는다.. ㅠ_ㅠ
늘어만 가는 탭들...


그리고 이 자료보다 더 정리가 깔끔하게 되었다고 생각되는 참고 블로그는..


이 분의 블로그를 참고하여 직접 해보고, 캡처하며 이 글을 올린 것이므로... 카피는 아님을 밝힌다. ;


Posted by 1010
98..Etc/Etc...2008. 12. 15. 15:31
반응형
네이버 개발자 센터가 어제 11월 22일에 오픈했나봅니다. 오픈 소스와 오픈 API 로 분류 되고 있고 오픈 소스는 아래와 같은 프로젝트 들이 진행되고 있습니다. 오픈 소스 분류를 보면 제로보드로 많이 알려지고 이번에 개명된 Xpress Engine 과 개발자 들에게 어느 정도 알려진 국산 오픈소스 데이터베이스인 큐브리드 를 포함해 협업 개발 플렛폼 nFORGE, 서버 장비 모니터링 툴 Sysmon, 복수 서버 관리 쉘 Dist, 대형 분산 데이타 서버 관리 시스템 neptune, 분산 메모리 기반의 컴퓨팅 플랫폼 Coord, 네이버 카페와 블로그에 사용되고 있는 자바스크립트 WYSIWYG 에디터인 스마트 에디터로 구성되어 있고 앞으로 더 많은 오픈 소스 프로젝트가 추가된다고 하니 반가운 일 입니다. 이제 시작이지만 빠르게 활성화 되서 즐겁고 유익한 개발자들의 놀이터가 되길 바라며 국내 뿐만 아니라 해외 개발자들도 함께 할 수 있는 개발자 센터가 되길 바랍니다.

[큐브리드]
큐브리드는 엔터프라이즈급 오픈 소스 DBMS로서, 인터넷 서비스에 최적화된 DBMS를 지향하고 있습니다. 국내외 6,000 카피 이상의 현장 적용과 지난 2년간 3만건 이상의 제품 다운로드를 통해 미션 크리티컬 응용에서 요구하는 성능, 안정성, 확장성, 가용성을 보장하고 있으며, 제품의 간편한 설치 및 GUI 기반의 클라이언트 툴을 자체 제공함으로써 개발자 접근성 및 관리 편의성을 증대하고 있습니다.

CUBRID 2008은 참여, 개방, 공유의 가치를 기반으로 국내 개발자들과 함께 만들어가는 DBMS가 될 것이며, 특정 벤더에 종속적인 소프트웨어 생태계를 국내 ISV들과 협업하여 재편하고 궁극적으로 국산 DBMS가 많이 사용되는 세상을 만들어 가겠습니다.

[nFORGE]
nFORGE는 소프트웨어 개발에 필요한 기능들을 사용하기 편리하게 웹으로 묶은 협업 개발 플랫폼입니다. 버그나 문제점을 올리고 관리할 있는 이슈 트래커, 각종 문서와 정보를 간편하게 공유할 수 있는 위키, 소스코드의 변경내역을 편리하게 관리할 수 있는 형상관리 툴, 일반적인 용도의 게시판, 그리고 최종 작업 결과물을 공유하기 위한 파일 릴리즈 기능 등을 포함하고 있습니다.

nFORGE를 통해서 소프트웨어 개발자들이 개발 효율도 높이고 즐겁게 개발 작업이 이루어질 수 있도록 하고자 합니다. 이곳 네이버 개발자 사이트의 각종 프로젝트들도 모두 nFORGE 위에서 운영되고 있으니 부디 많이 가져다 쓰시고, 사용 도중 발생한 문제점이나 제안사항 등은 언제든지 nFORGE 프로젝트 사이트에 올려 주셔서 부디 nFORGE가 더 좋은 소프트웨어가 되어 함께 나눌 수 있도록 도와 주시면 감사하겠습니다.

[Xpress Engine]
컨텐츠의 생산과 유통을 극대화 하여 웹 생태계의 선순환에 기여하기 위해 Xpress Engine (XE) 오픈 소스 프로젝트는 시작되었습니다. Developer, Navigator, Explorer 라는 3개의 프로젝트 그룹의 멤버들 그리고 사용하고 참여해주시는 많은 분들의 노력과 정성으로 Xpress Engine 는 Content Management System으로 발전하고 있습니다. 그리고 차별없는 웹 세상을 만들기 위해 웹 표준화 / 웹 접근성을 준수하고자 노력하고 있습니다.

보다 쉽고 편하게 글을 작성하고 작성된 글을 보이도록 그리고 잘 사용되도록 함으로서 웹이라는 가상의 공간이 더욱 풍족해지고 쓸만한 곳이 될 수 있도록 많은 분들의 관심과 참여를 원합니다.

[Sysmon]
Sysmon은 대규모 리눅스/윈도우 서버 장비를 모니터링하기 위해 개발된 MySQL 기반의 웹 도구입니다. 5천 이상의 서버에 대해 한 대의 마스터 서버로 모니터링이 가능하며, 사용자가 간단한 조회를 통해 쉽게 장비의 종합적인 상태를 파악할 수 있습니다. 또한 다양한 요구사항을 만족시키기 위하여 기본적인 수집 항목 이외에 모니터링 대상 항목과 모니터링 뷰 화면을 사용자가 유연하게 추가, 변경할 수 있도록 설계되었습니다.

Sysmon은 현재 NHN의 서버 운영에 크게 기여하고 있으며 쉬운 설치와 강력한 기능을 바탕으로 점점 사용자 저변을 넓혀가고 있습니다. 보다 많은 사용자가 Sysmon을 접하고 보다 많은 개발자가 오픈소스 개발에 참여함으로써 Sysmon은 한층 더 좋은 소프트웨어로 발전해갈 수 있을 것입니다. 많은 관심과 참여를 부탁 드립니다.

[Dist]
Dist는 다수의 서버를 효율적으로 관리하기 위한 셸 명령어 수행 도구입니다. Dist를 사용하여 마스터 서버로 내려진 명령어는, 여러 서버에 동시 또는 순차적으로 실행되고 그 결과는 정리되어 마스터 서버에서 보여집니다. 각 서버의 상황에 맞는 명령어 커스터마이징, 출력 형태의 변경, 자유로운 명령어 수행, 서버 목록 구성, 향상된 에러 처리 능력 등의 강력한 기능을 가지고 있습니다. Python으로 만들어진 그리 크지 않은 간단한 프로그램이지만, 다수의 시스템을 효과적으로 신속하고 편리하게 운영하는데 큰 도움을 줄 것입니다.

Dist는 NHN 주요 서비스를 담당하는 다수의 서버(unix, linux, 윈도우 서버)를 효과적으로 운영하는데 탁월한 효용성을 보여주고 있습니다. 또한 지속적으로 기능을 추가하여 점점 더 사용하기 편리한 도구가 될 것입니다.

[neptune]
neptune은 수십 ~ 수백대의 분산된 서버에 수십 TB 이상 대규모의 구조화된 데이터를 저장, 서비스하는 데이터 관리 시스템입니다. neptune을 이용하면 실시간 데이터 서비스뿐만 아니라 Hadoop MapReduce와 같은 분산컴퓨팅 플랫폼과 유기적으로 동작하여 쉽고 빠르게 저장된 데이터를 분석할 수 있습니다. 심플한 데이터 모델, 수천대 규모의 확장성, 데이터의 신뢰성, 백업이 필요 없는 스토리지, 자동 복구 기능 등을 neptune에서 경험할 수 있습니다.

인터넷을 통해 수많은 정보가 쉽고 빠르게 생산되고 있지만 생산된 정보를 쉽고 안전하게 담을 있는 플랫폼은 많지 않습니다. neptune 프로젝트는 인터넷, 클라우드 컴퓨팅 시대에서 생산되는 무한대의 데이터를 저장하고 서비스하는 플랫폼을 만들기 위해 노력하겠습니다.

[Coord]
Coord는 분산 메모리 기반의 컴퓨팅 플랫폼입니다. 다수의 서버로부터 수집된 물리적 메모리 공간들은 Coord의 거대한 가상 메모리 공간으로 매핑됩니다. 이렇게 구성된 거대한 메모리 공간은 분산 환경을 위한 프로세스간 통신, 자원 공유, 동기화를 위하여 사용되고, 사용자는 단순한 API(read/write/take)만으로 다양한 분산 프로그래밍 모델(client-server, master-worker, scatter-gather, map-reduce)을 별도의 네트워크 관련 지식없이 쉽게 구현할 수 있습니다. 따라서 사용자는 일반적인 목적을 위한 분산 프로그래밍 뿐만 아니라 대규모 계산이나 대용량 데이터 처리를 필요로 하는 분산 프로그래밍에서도 Coord를 유용하게 사용할 있습니다.

현재 Coord는 C++을 기반으로 개발되었지만 다양한 프로그래밍 언어(Java, Python, PHP등)들을 함께 지원하고 있습니다. 이것은 기 개발된 데이터/텍스트 마이닝 알고리즘들과 기계학습 알고리즘들이 Coord와 함께 유연하게 연동될 수 있다는 가능성을 보여줍니다. 대부분의 알고리즘들이 단일 서버 환경에서 한정적인 메모리 기반으로 설계되었기 때문에 분산 환경에 적용하는 것이 쉽지만은 않습니다. 그러나 Coord를 사용하면 최소한의 코드 수정만으로 기 개발된 알고리즘들을 그대로 분산 환경에 적용할 수 있습니다. 이를 위하여 대규모 계산 문제나 대용량 데이터 처리에 관심있는 개발자들의 적극적인 참여가 필요합니다. Coord 기반의 분산 컴퓨팅의 세계로 여러분들을 초대합니다.

[스마트 에디터]
스마트 에디터는 Javascript로 구현된 웹 기반의 WYSIWYG 에디터입니다. 스마트 에디터는WYSIWYG 모드 및 HTML 편집 모드 제공, 자유로운 폰트 크기 설정 기능, 줄 간격 설정 기능, 단어 찾기/바꾸기 기능 등 편집에 필요한 다양한 기능을 제공하므로 사용자들은 스마트 에디터를 사용하여 쉽고 편리하게 원하는 글을 작성할 수 있습니다. 그리고 에디터의 구조가 쉽게 기능을 추가할 수 있는 구조로 되어 있어 스마트 에디터에 기능을 추가하기 위해서는 정해진 규칙에 따라 플러그 인을 만들어 추가하기만 하면 됩니다.

현재 스마트 에디터는 네이버, 한게임 등 NHN의 주요 서비스에 적용되어 있습니다. 그리고 Internet Explorer 6 이상, FireFox 2 이상, Safari 3, Opera 9, Chrome등 다양한 브라우저를 지원하고 있으며 지속적으로 지원 대상 브라우저를 넓혀 갈 예정입니다. 또한 지속적인 기능 추가를 통해 편리하고 강력한 에디터로 거듭날 것입니다.

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info
Posted by 1010
98..Etc/Etc...2008. 12. 10. 15:31
반응형

웹 사이트 물려받기: 웹 사이트를 유지보수 가능한 상태로 만들기

지나친 부담감 없이 다른 누군가의 웹 사이트를 받아서 유지보수하는 방법

developerWorks
문서 옵션
수평출력으로 설정

이 페이지 출력

이 페이지를 이메일로 보내기

이 페이지를 이메일로 보내기

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Brett McLaughlin, 저자 겸 편집자, O'Reilly Media Inc.

옮긴이: 박재호 이해영 dwkorea@kr.ibm.com

2008 년 5 월 20 일

완벽한 세상에서 여러분은 지금까지 할당된 모든 웹 사이트를 직접 유지보수하고, 개선하고, 새로 설계할 것입니다. 불행하게도 현실 세계에서는 여러분은 종종 누군가 다른 사람이 설계했거나 만든 사이트를 이어 받아야 할 경우가 생깁니다.

새로운 직업, 새 프로젝트, 새로운 책임감은 모두 위험을 안고 다가온다. 새로운 상사, 새 사무실, 새 동료를 맞이하는 동안, 이제 여러분이 보살피고 먹여살릴 웹 사이트를, 어떻게 서로 연결되어 있는지 아무런 힌트도 주지 않고 넘기는 행위보다 더 치명적인 위협은 없다. 종종 특히 경험이 부족한 웹 디자이너나, 더 나쁘게 단순히 내용을 "채워넣기에 급급한" 누군가가 만든 사이트를 넘겨 받으면 내용, 표현, 심지어 몇몇 활동이 뒤죽박죽된 유산을 상속받는 셈이다. 물론 페이지는 추하게 보인다. blink 태그가 없더라도 엉킨 스타일, CSS 스타일과 짬뽕이 되어버린 글꼴 태그, 닫혀 있지 않고 오용된 HTML 태그... 완전히 엉망진창이다.

다행스럽게도 이런 페이지를 깔끔하게 조율되고 쉽게 유지보수가 가능한 웹 사이트로 변신하게 만드는 논리적인 접근 방법이 존재한다. 2부로 나눈 이 글은 엉망진창이고 다루기 힘든 페이지를 제대로 구조화되고 조직화되고 유지보수 가능한 코드로 바꾸는 로드맵을 제공한다. 1부에서 사이트를 유지보수 가능하게 만드는 방법을 배운다. 2부에서 사이트 레이아웃을 조직화하고 효율을 높이고 통제하에 놓여있는지 확인할 것이다.

몇몇 유효성이 증명된 기법이 이런 복잡한 작업을 관리 가능하게 만들며, 성공을 넘어서 탁월한 위치에 이르게 만든다. 이런 기법은 또한 사이트를 연결하는 데 투입되는 시간을 최소로 줄이고, 개선하고, 유지하는 과정에 투입되는 시간을 최대로 높이도록 만든다. 이런 방식으로 만든 사이트를 나중에 새로 단장하거나 심지어 디자인을 새롭게 할 기회가 생기면, 뒤얽힌 스타일로 범벅된 HTML 대신에 잘 나눠진 HTML과 CSS에서 시작할 수 있다.

평가: 자신이 소유한 페이지는?

다른 사람 작업을 이어받은 다음에 가장 먼저 해야 할 일은 정확하게 자신이 소유한 페이지가 어떤지 확인하는 작업이다. 본능적으로 (Windows®용) 노트패드나 손에 익숙한 편집기를 사용해서 바로 작업을 진행하고 싶을 것이다. 하지만 이 시점에서 무턱대고 수정 작업을 하면 상황을 더 꼬이게 만든다. 무엇을 다뤄야 하는지 이해할 필요가 있으며, 5분이나 10분 정도 살펴보면 좀 더 많은 지식이 쌓일 것이다.

사이트 살펴보기

웹 브라우저로 사이트를 열어 보자. HTML과 CSS를 강제로 열지 말고, JPG나 GIF로 저장된 이미지인지 걱정하지 말고 단순히 사이트를 열어보자. 노트패드를 모니터에 띄워놓고, 여러분이 목격한 상황을 갈겨쓰자. 하지만 가장 어려운 주문이지만, 큰 그림에 초점을 맞추자. IE7에서 테이블 사이에 한 픽셀짜리 공백이 보여도 참고 넘어가자. 그 대신 초기에 받은 인상을 기록하자. 상단 배너가 페이지를 압도하고, 수직 스크롤이 짜증나고(항상 그렇긴 하지만!), 기타 등등 말이다.

여기서 요점은 여러분 HTML을 바꿀 작은 항목을 스무 단계로 나누는 데 있지 않다. 단지 전반적인 인상을 파악할 뿐이다. 이 사이트를 좋아하는가? 싫어하는가? 내용이 너무 많은가? 이미지가 흐릿한가? 사이트 디자인 과정에서 반드시 수행해야 하는 아주 일반적인 옵션으로 채워넣어야 한다. 구현 부분을 조금 다루더라도, 전체 그림을 얻기 위한 준비 절차에 그쳐야 한다.

이 단계에서 여러분은 또한 진행해야 할 디자인 작업이 많지 않다. 사이트가 여기서 멋지게 보인다면, 작업은 훨씬 더 쉬워진다. HTML이나 CSS를 파고 들기 앞서 사이트를 점검하도록 권장하는 이유가 바로 여기에 있다. 많은 사이트가 구현 과정에서 재앙이 닥치지만 사이트 자체는 멋지게 보인다. 거꾸로 뒤집어보면, HTML과 CSS로 뒤죽박죽된 장면을 목격하고 사이트를 살피다 보면 관점이 흐려지고, 사이트 구현이 여러분 입맛에 맞지 않기 때문이라는 이유로 필요도 없는 디자인을 다시 할지도 모른다. 사이트를 먼저 살펴보고, 결정을 내리고, 그 다음에 HTML과 CSS를 파고 들자.

표준화

코드로 파고 들기 전에 웹 페이지 유효성을 확인한다는 한 단계가 더 남아있다(물론 이 단계는 구현에 확실히 한 걸음 다가가도록 만들어준다). 유효성은 웹 페이지가 HTML인지 XHTML인지, 여러분 페이지가 순응해야 할 명세가 어떤 버전인지 살펴보는 작업이다. 일반적으로 여러분 웹 페이지가 이미 따르는 명세를 그대로 이어가기를 원할 것이다.

여기서 명심해야 할 목표는 노력을 줄이는 데 있다. 최대한 빨리 사이트 유지보수를 하고 싶으며, 합리적인 수준에서 최소한의 노력으로 사이트를 확장하고 싶기 때문이다. 사이트를 다시 디자인한다면, 여러분이 가장 편한 기술로 이동하기를 원할지도 모르겠다. 예를 들어, 여러분이 XHTML 전문가라면, 이 사이트를 XHTML로 바꿀 수 있는데, 여러분이 선택한 표준이기 때문이다. 하지만 목표가 효율성이라면, 페이지를 현재 형식으로 유지하는 정책을 따르는 방법이 최선이다.

명세에 의미를 더하기

오늘날 사용하는 HTML에는 HTML과 XHTML이라는 두 가지 버전이 있다. HTML은 지난 10년 동안 귀에 못이 박히도록 들어온 표준이다. XHTML은 여러 가지 새로운 규칙과 묘안을 제시한 HTML을 XML화한 버전이다. HTML을 사용한다면 버전이 4.01이다. 이 버전을 사용할 경우 (예전 버전에서 4.01로 쉽게 이동하기 위한 목적으로 만든) 좀 느슨한 traditional과 모든 규칙을 정말로 지켜야 하는 strict로 하위 버전이 나뉜다. XHTML을 사용할 경우 HTML이 요구하지 않는 끝 태그 유지와 같은 XML에 밀접한 몇 가지 사항을 지켜야 한다. XHTML에서는 HTML에서 XHTML로 쉽게 이동하기 위한 1.0 transitional 버전과 모든 사항이 XHTML 규약에 엄격하게 맞아 떨어저야 함을 의미하는 1.0 strict로 하위 버전이 나뉜다. 1.1 명세도 나왔지만 그다지 유용하지 않다. HTML과 XHTML에 대한 세부 사항이 궁금하면 요즘 내가 편집 중이기 때문에 추천하는 Head First HTML with CSS & XHTML을 읽어보기 바란다. 이 기사 참고자료 절에 정리해놓았다.

무엇을 낚았는지 살펴보기

W3C 마크업 유효성 검사기(참고자료 참조)를 사용해 사이트 URL을 입력한다(그림 1 참조).


그림 1. W3C 유효성 검사기
W3C 유효성 검사기

유효성 검사기는 파일을 올릴 수 있을 뿐만 아니라 기존에 구축한 사이트도 처리할 수 있다.


그림 2. 유효성 검사 결과 요약
유효성 검사기는 여러분 페이지가 어떤 명세에 순응하는지 찾아낸다.

이 경우, 유효성 검사기는 여러분 페이지의 인코딩과 doctype을 찾아내며, 이를 통해 다시 유효성 검사를 진행한다.

여러분의 페이지 내부에 doctype 달기

유효성 검사기는 심지어 여러분 페이지에 일치하는 doctype이 없을지라도, 여러분의 페이지가 무엇인지 최선을 다해 감지해내려고 노력한다. 여러분이 XHTML 1.0으로 doctype을 지정했는데, 페이지가 실제로는 HTML 4.01 transitional이라면, 유효성 검사기는 이 사실을 알려준다. 임의의 doctype을 일치시키려고 노력하는 대신(아마도 지나치게 열성적인 웹 디자이너가 미리 입력했을지도 모르겠다), 유효성 검사기가 여러분 페이지가 무엇인지 알려주는 정보로 시작한다. 이게 가장 효율적인 접근 방법이며, 유지 보수 가능하고 유효한 사이트를 재빨리 만드는 과정에서 도움을 줄 것이다.

유효성 검사기는 또한 오류를 보고한다.

페이지가 무엇인지 추측하는 작업 이외에, 유효성 검사기는 이런 추정에 기반을 두고 오류를 보고한다. 특히 사이트를 넘겨받았을 경우는 물론이고 거의 모든 경우에, 여러분 앞에 펼쳐진 페이지가 얼마나 제대로 유지되고 있는지 확신하지 못하면 오류가 존재할 것이다(그림 3은 그림 2에서 나타나지 않는 여러 오류를 보여준다).


그림 3. 유효성 오류
원시 HTML 파일에 존재하는 오류는 검토를 위해 출력된다(결국 이 오류는 수정해야 한다).

다시 한번 말하지만, 실행이 어려운 충고 하나를 제시한다. 바로 이런 오류를 수정하려고 서둘지 말자. 여러분이 수정하고 싶어한다는 사실을 너무나 잘 알고 있다. 하지만 핵심은 다음과 같다. CSS가 HTML에서 분리되어 있지 않고 행 분리(<br>)는 사방에 흩어져 있는 등 웹 사이트가 엉망진창이라면, 여려분이 힘겹게 수행한 모든 작업은 다시 한번 바뀌어야 한다. 여러분이 CSS를 HTML에서 분리해야 한다면, 지금 당장 오류 결과를 수정할 이유가 있는가? 분리한 다음에 나중에 다시 돌아와 유효성 문제를 처리하자.

이런 단계에서 목표는 여러분이 무엇을 추구하는지 생각해내는 데 있다. 여러분 페이지가 XHTML 1.0을 목표로 하면, 아마도 쉽게 XHTML 1.0으로 돌아갈 수 있을 것이다. 또한 가정을 한 가지 하자. 디자이너가 어떤 이유에서인지 XHTML 1.0을 선택했다면, 여러분이 정확한 이유를 모를지라도 이런 판단을 계속 따르는 편이 안전하다.

여러분 사이트가 기본적으로 가장 느슨한 표준인 HTML 4.01 transition로 되돌아간다면, 어찌되었거나 문제는 없다. 충족해야 하는 기준이 낮기 때문이다. 여기서 제시하는 아이디어는 원래 디자이너가 어떤 요구사항을 받았는지 무관하게 이를 충족하는 설계와 구현 양쪽에서 튼튼한 사이트로 가는 최단거리를 찾는 작업이다. 종종 이런 요구사항이 무엇인지 모를 경우에는 유효성 검사가 바로 역공학을 가능하게 만드는 한 가지 방법이다.

하지만 1000페이지가 넘잖아요!

지금까지, 여러분이 유효성 검사기를 수동으로 돌려 사이트에 존재하는 페이지를 모두 하나씩 차례로 돌려봐야 한다고 가정했다. 궁극적으로는 모든 페이지에서 모든 오류를 검출하며, 각 페이지에 적절한 주의를 기울이도록 만드는 방법이 최선이다. 첫 몇 페이지로 작업하다 보면, 종종 (예를 들어 대규모 치환을 통해 헤더 섹션을 변경하는 작업과 같이) 전체 사이트에 적용할 변경 사항이 나오는데, 이를 활용하면 나중에 페이지를 수정하는 작업이 쉬워진다.

하지만 효율성을 강조하면, 유효성 검사를 일괄 작업으로 처리할 필요가 있다. 이런 경우에는 여러분은 W3C 유효성 검사기를 벗어나서 (엄청나게 뛰어난 기술은 아니지만 그럭저럭 쓸만한 기술로 여러 URL을 텍스트 박스에 입력하도록 만들어주는) WDG HTML 유효성 검사기나 (일괄 작업을 수행하도록 만드는 저렴한 프로그램인) CSE HTML 유효성 검사기로 눈을 돌려야 한다(참고자료 참조). 유효성 검사를 일괄 처리할 경우 시간을 절약할지는 몰라도, 대규모 사이트를 다루다 보면 수천 개는 아니더라도 수백 개가 되는 오류에 직면하기 때문에 세부 내역을 놓치기 쉽다는 문제점이 생긴다.

유효성 검사에 목숨을 거는 이유는?

여러분이 대다수 웹 개발자와 같다면, 유효성 검사는 아무리 잘 봐줘도 성가신 존재고, 눈 밖에 나면 끔찍한 악몽이다. 우선 페이지를 유효성 검사기로 돌려야 하며, 수백 개가 넘는 붉은 색 오류 메시지가 나오는데, 사람을 압도해버린다. 하지만 유효성 검사를 하면 페이지 유효성 검사에 들인 노력을 충분히 보상받는 몇 가지 장점이 따라온다.

먼저, 유효한 페이지는 화면에 제대로 출력된다. 유효하지 않은 페이지는 종종 닫는 태그가 빠져 있으며, 부적절한 HTML 태그가 중첩되어 있으며, 심지어 CSS 스타일 태그에 문제도 있다. "있으면 좋은" 항목이 아니라 기대하는 바대로 페이지를 출력하기 위한 사이트 필수 항목이다. bh1 태그가 잘못 놓여있거나 열린 채로 내버려 두면, 갑자기 전체 페이지가 읽기에 너무 큰 글꼴로 도배되며, 놀란 사용자는 즉시 사이트를 벗어난다. 따라서 유효성 검사는 여러분의 페이지에 "예측 가능한"이라는 도장을 찍는 방법이다. 태그를 적절히 사용하면, 페이지는 구조적으로 건전하며, 사용과 탐색도 쉽다.

추가적으로, 유효성 검사는 여러분이 페이지에 가한 변경과 갱신을 항상 점검하는 기능적인 기준점을 제공한다. 페이지가 유효성 검사를 통과한 상태에서 갑자기 유효성이 깨진다면, 단순히 점검하지 않은 변경 내역뿐만 아니라 구조나 심지어 사이트 표현 방법을 엉망으로 만든 원인이 무엇인지 알게 된다. 따라서 코드를 매번 변경한 다음에 컴파일하듯이 유효성 검사를 점검 기능으로 생각하기 바란다. 컴파일(또는 유효성 검사)이 실패하면 뭔가 잘못된 상황이다.

마지막으로 구글, 야후!, MSN과 같은 검색 엔진이 유효한 페이지를 좀 더 쉽게 색인하는지에 대해서는 의견이 분분하다. 이런 검색 엔진이 사용하는 알고리즘은 아주 비밀스럽고 계속 바뀌므로 유효성 검사가 관련이 있다고 말하는 문서를 찾더라도 내용이 바뀌는 바람에 소용이 없어졌다고 말할지도 모르지만, 검색 점수나 색인 결과를 높이는 작용을 한다. 결론은 검색 엔진 개발자가 아닌 이상 우리는 내부 사정을 모르지만 (유효성 검사를 통해) 구조적이고 적절히 출력되는 페이지를 사람들이 좀 더 많이 방문하므로 어떤 검색 순위에서도 상위에 나타나리라 기대한다.




위로


구현: CSS 정리하기

이 시점에서 전반적인 사이트 디자인과 (HTML, XHTML 등) 사이트 설계를 위한 명세 지식을 확보했을 것이다. 이제 마지막으로 사이트 자체를 바꿀 시간이 왔다.

CSS 몰아내기

백업? 테스트? 무대 만들기?

회사마다 프로젝트마다 백업과 개발 절차가 다르다. 하지만 현재 사이트에 구멍을 낼 염려없이 사이트에서 작업을 하려면 뭔가 조치를 취해야 한다. 이런 조치는 사이트를 백업하거나, 사이트 내용을 다른 기계로 중복하는 방법으로 (아니면 http://staging.my-company.com처럼 동일한 기계에 DNS 설정을 다르게 줘서) 진행하는 작업을 의미한다. 여기서 개선 도중에 실제 사이트를 죽이지 않는다는 사실만 확신하면 된다.

HTML transitional, HTML strict, XHTML transitional, XHTML strict 중에 무엇을 택하거나, 페이지에서 스타일을 뽑아내어 외부 CSS 스타일시트로 이동해야 한다. 내용에 표현과 스타일을 섞어 놓은 상황에서, 쉽게 유지보수가 가능한 일관성 있는 사이트를 만드는 간단한 방법은 없다.

CSS와 HTML 분리에 대한 수많은 기사가 웹에 올라와 있으므로 따분한 세부 사항으로 독자들을 괴롭히지는 않겠다(참고자료 참조). 하지만 반드시 지켜봐야 할 몇 가지 항목을 여기에 정리해보았다.

  • 상당히 기계적인 작업이 되어야 한다. 페이지 외형을 개선하려고 노력하지 말자. 단지 HTML 바깥으로 CSS를 몰아내려고 노력하면 된다.
  • 최적화와 CSS 규칙 준수를 걱정하지 말자. HTML 바깥으로 몰아내고 난 다음 단계에서 규칙을 최종 점검하면 된다.
  • 유효성 검사에 대해서 걱정하지 말자. <br />과 닫히지 않은 <p> 태그에 신경쓸 필요가 없다. 언젠가는 하겠지만 지금 당장은 아니다.

작업을 끝내고 나면 HTML 상단은 다음과 같이 보여야 한다.

<![CDATA[
  <head>
    <title>The Starbuzz Bean Machine</title>
    <link rel="stylesheet" type="text/css" href="starbuzz.css" />
    <link rel="stylesheet" type="text/css" href="styledform.css" />
  </head>]]>

이 예제는 다중 스타일시트를 포함한다. 핵심 외향과 느낌에 추가해서 사이트의 특화된 영역이 있다면, 다중 스타일시트를 권장하지만, 이는 어디까지나 선택이다.

CSS 최적화하기

일단 모든 스타일을 HTML 바깥으로 몰아내었다면, CSS 스타일시트가 하나 이상 만들어진다. (CSS 스타일 시트(CSS stylesheet, cascading style sheet stylesheet)라는 이름이 역전앞 거지라고 들리는 사실을 알고 있다. 하지만 어떻게 표현할지 특별한 생각이 없으므로 우스개소리를 계속 즐기기 바란다.) 각각을 골라서 하나씩 각개격파하자. 예를 들어 다음과 같은 스타일 시트가 있다면,

h1 {
  color: #933;
  font: Georgia;
}

h2 {
  color: #933;
  font: Georgia;
}

압축해서 다음과 같은 스타일 시트를 고려해보자.

h1, h2 {
  color: #933;
  font: Georgia;
}

크게 어려운 내용은 없지 않은가? 좀 더 현실적인 사례를 고려해보자. h1, h2 구문이 엄청나게 큰 CSS 스타일 시트에 흩어져 있다고 가정하자. 하나를 바꿨는데, 왜 다른 h1h2에 지정된 글꼴은 잘못 표현되는지 궁금해진다.

이런 문제를 해결하는 한 가지 방법으로 선언을 알파벳 순서로 만든다. 물론 고통스럽긴 하겠지만, h1h2가 하나로 묶이며, table, td, tr이 근처에 놓인다. 비슷한 엘리먼트를 모아놓는 수고를 들여서 스타일을 압축하자.

비슷하게 다음과 같은 선언을 한번 생각해보자.

h1 {
  color: #933;
  font: 16px Georgia;
}

h2 {
  color: #933;
  font: 12px Georgia;
}

공통 엘리먼트를 제거해서 중앙으로 모아야 한다.

h1, h2 {
  color: #933;
  font: Georgia;
}

h1 {
  font-size: 16px;
}

h2 {
  font-size: 12px;
}

이렇게 해도 선언 두 가지가 여전히 존재하지만, 그래도 한 곳에서 공통 부분을 찾을 수 있다(이 경우에는 h1).

CSS 스타일 시트를 훑어보면서 가능한 최고로 조율을 끝내도록 노력하자. 여러분이 만든 규칙을 압축해 대다수 중복을 제거하고, 가능한 규칙을 위로 끌어 올려 정리하자. 예를 들어, 모든 최상위 엘리먼트에 Georgia로 글꼴 설정을 했다면, 이 규칙을 body로 옮겨서 나머지 모든 개별 규칙을 제거하는 방법을 고려하자. 단순함이 미덕이다.

CSS 유효성 검사하기

여기에 두통거리를 줄여주는 선택적인 단계를 제시한다. 일단 CSS 준비가 끝나면, 유효성을 검사한다(그림 4 참조)(참고자료 절에서 CSS 유효성 검사기 링크를 찾아본다). 페이지 유효성 검사기와 마찬가지로, CSS 유효성 검사기는 CSS가 제대로 되어 있는지 확인해준다. 현재 구문 오류도 없고 오탈자도 없다(그림 5 참조).


그림 4. CSS 유효성 검사기
W3C 유효성 검사기는 웹 페이지 유효성 검사기를 보완해주는 서비스다.

그림 5. 성공적인 CSS 유효성 검사 결과
유효한 CSS는 모든 규칙이 올바르며, 구문이 완벽함을 의미한다.

전체 페이지가 유효하다고 확신하는 경우와 비교해서 CSS 유효성은 기술적으로 그렇게 중요하지 않다. 실제로, 유효하지 않은 CSS가 담긴 유효한 HTML(또는 XHTML) 웹 페이지가 존재할 수 있다. 하지만 여전히 CSS 유효성 검사는 모든 사항을 멋지고 깔끔하게 유지하므로 수작업을 통해 CSS를 최적화하도록 만들자.




위로


구현: Doctype 추가하기

여러분의 사이트에 다시 한번 유효성 검사를 수행할 시간이 왔다. 이제 많은 오류가 사라졌으며 CSS는 HTML에서 밖으로 빠졌다(그리고 깨끗하게 정리되어 유효성 검사도 끝났다). 이제 여러분이 작업한 내용을 문서로 만드는 작업을 잊어버리지 말자. 아직 doctype이 없다면, 문자 인코딩 정보와 더불어 추가할 필요가 있다. 이렇게 하면 다음 사람이 유지보수하기가 훨씬 쉬워진다.

doctype 선언 추가하기

유효성 검사기에서 결과를 얻을 때, doctype에 초점을 맞추자(그림 6 참조). 이 결과는 유효성 검사기가 최선을 다해 추측한 결과에 따라 여러분에게 웹 페이지가 무엇을 목표로 하며 어떤 버전인지 알려준다.


그림 6. 유효성 검사기가 doctype을 추측하려고 시도하는 모습
이 웹 페이지에서 문서 유형은 아마 XHTML 1.0 Transitional일 가능성이 높다.

이 경우에, 페이지는 아마 XHTML 1.0 Transitional일 가능성이 높다. 이는 초기에 유효성 검사기를 돌렸을 때 얻은 결과와 다를지도 모르지만, 거의 같다(CSS는 일반적으로 HTML과 XHTML 비교에 영향을 미치지 않는다).

물론 지금 당장은 유효성 검사기가 (대다수 경우에) doctype을 추측하고 있다. 하지만 doctype 선언을 추가해서 이런 추측을 공식화한다. HTML을 열어서 상단에 다음과 같은 내용을 추가하자.

<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<!-- Rest of your HTML -->
]]>

이 예제는 XHTML 1.0 transitional이다. XHTML 1.0 strict라면 다음과 같이 추가한다.

<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
]]>

HTML 4.01 transitional은 다음과 같이 추가한다.

<![CDATA[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                      "http://www.w3.org/TR/html4/loose.dtd">
<html>
]]>

HTML 4.01 strict는 다음과 같이 추가한다.

<![CDATA[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
]]>

HTML doctype에서는 html 엘리먼트에 xmlns 속성이 필요하지 않다. 이 속성은 XHTML 전용이다(xmlns는 XML 이름공간이며, 다른 기사에서 다룰 주제다).

이 모든 내용은 유효성 검사기뿐만 아니라 여러분의 웹 사이트를 이어받을 다른 사람에게 여러분 문서의 목표가 무엇인지 선언한다. 유효성 검사기를 다시 한번 돌릴 수 있는데, 유효성 검사기가 추측한 여러분 페이지의 목표와 일치하지 않도록 엉터리로 doctype을 지정하지 않은 이상 큰 차이는 느끼지 못할 것이다. 다시 한번 오류가 발생할 수 있다.

XHTML 청중을 위해: content type

XHTML doctype 중 하나를 사용했다면, 간단한 단계 하나를 더 밟아야 한다. 이 문서에 content type을 지정하는 meta 태그를 붙일 필요가 있다. 예는 다음과 같다.

<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>]]>
  <b><meta http-equiv="Content-Type" content="text/html; charset=UTF=8" /></b><![CDATA[
  <title>My Page Title</title>
 </head>
 <!-- etc. -->
]]>

이는 유효성 검사기(아니면 XHTML 순응 웹 브라우저와 같은 기타 프로그램)가 내용을 읽을 때 무엇을 기대할지 알도록 만든다. HTML 페이지에도 content type을 추가할 수 있지만, HTML 4.01 strict에서만 필요한 내용이다. (HTML에서 meta 태그 뒤에 따라나오는 슬래시를 빼야 한다. 이런 규칙은 XTHML 용이다.)




위로


사이트의 유효성 검증하기

CSS와 HTML을 분리했으며, 어떤 HTML/XTHML 버전을 사용하는지 이해하고, doctype과 content type을 지정하고 나면, 미뤄뒀던 오류를 정리할 준비가 되었다.

단순한 오류

다시 한번 유효성을 검사하자. 무엇을 목표로 했는지 명세했으므로 오류를 잡기 시작한다. 그림 7은 HTML 문서에 등장하는 전형적인 문제를 보여준다.


그림 7. 한번에 오류 하나씩 고치기
이런 특정 오류는 form 엘리먼트에서 action 속성이 빠져있음을 알려준다.

이 정도 오류는 고치기가 아주 쉽다. 이 페이지에는 action 속성이 빠진 form 엘리먼트가 있다. 이 속성을 추가하면, 오류가 사라진다. 너무나도 쉽지 않은가?

한번에 오류 하나씩 고치기

일단 첫 오류를 수정했으면, 계속해서 유효성 검사를 진행하자. 시간을 소비해서 오류를 수정하고 유효성 검사를 하고 다른 오류를 잡는 반복적인 작업이 조금 짜증나겠지만 유효성 검사기를 사용하는 가장 효과적인 방법이다. 오류 하나는 다른 오류를 줄줄이 달고 나오므로 오류 하나를 수정하면 여러 오류가 사라지므로 9개나 10개 정도만 수정하면 작업이 끝나게 된다.

HTML 편집기와 여러분 사이트용으로 하나, 유효성 검사기용으로 하나씩 브라우저 창(또는 탭)을 두 개 띄워놓기 바란다. 오류를 수정하고 나서 편집기로 파일을 저장하고, 양쪽 브라우저 탭에서 새로 고침 버튼을 눌러 갱신된 사이트와 유효성 검사 보고서를 살펴본다.

기준점 정의와 잠그기

유효한 페이지를 얻었다면, 이 버전을 잠글 필요가 있다. 백업하고, ZIP 드라이브나 USB 메모리에 복사하자(물론 큰 글씨로 메모를 적어 여러 장소에 분산해 놓아야 한다). 이런 식으로 사이트를 위한 기준점을 확립했다.

이제 변경할 때마다 다음과 같은 몇 가지 작업을 수행해야 한다.

  • 페이지가 여전히 유효한지 확인한다. 유효한 상태로 시작했기에, 새로운 코드와 예전 코드를 동시에 다루는 대신 점진적으로 점검 작업을 수행할 수 있다.
  • 페이지가 제대로 보이는지 확인하자. 여기서도 기준점만 있다면 문제 원인 파악이 쉽다.
  • 재앙에 직면하면 이 기사에 나온 모든 작업을 되풀이할 필요가 없다. 유효하고 내부에 문서화가 되어 있는 버전에서 시작할 수 있다.



위로


사이트 개선은 언제 하지?

이 기사는 (대다수 담당자 입장에서) 따분하고 지루한 과업에 초점을 맞추며, 웹 사이트가 실제로 보이는 방법에 영향을 미치는 내용은 거의 다루지 않는다. 이렇게 하는 이유는 선행 지식이 없는 상황에서도 사이트를 유지 보수 가능하게 만들기 위해서다.

뭔가 개선점을 찾는 대신 업무 부하를 줄이려고 노력하는 경우가 있다. 디자인 변경을 하고 싶다면 그렇게 하자. 하지만 출발점을 잘 닦아 놓았으므로, CSS를 정리하고 XHTML을 사용할지 아니면 HTML strict를 사용할지 아니면 다른 뭔가를 사용할지 고민하면서 디자인 작업에 들어가는 대신 원래 업무에 집중할 수 있다.

사이트 개선을 원하지 않더라도 어쨌거나 작업은 마친 셈이다. 여러분에게는 유효한 사이트가 있다. 하지만 더욱 중요하게, 이 사이트를 유지 보수 가능하게 만들었기에, 문제가 생겨도 찾아서 수정하기가 쉬울 것이다.




위로


결론

명백히 다른 누군가의 웹 사이트를 다루는 작업은 그리 유쾌하지 않다. 디자인, (잠재적으로 잘못된) HTML과 CSS 선택, 색상, 마크업과 구조 선택에 발목이 잡힌다. 따라서 주기적인 유지 보수를 하기 위해 들어가는 시간을 최소로 소비하며, 사이트 디자인 개선과 다른 즐거운 작업에 자신의 시간을 투입하도록 만드는 목표가 핵심이다.

이렇게 하기 위해 주어진 사이트와 안정적이고 이해도가 높은 사이트 사이에 벌어진 격차를 줄이는 최단 거리를 찾아내는 방법이 최선이다. 이는 사이트 상태가 어떤지, 어디로 가야 하고, 도착을 위해 어떤 단계를 밟아야 할지를 인식함을 의미한다. 이 기사는 여러분이 물려받은 사이트가 디자인 대상을 차지하는 대신, 디자인 승부사들이 작업하기 쉽게 만드는 목표로 작성했다. HTML이든 XTHML이든 strict든 tranditional이든 현존하는 사이트 형식을 따라서 완벽하게 CSS와 HTML 구현으로 바꿔 놓으면 중장기적인 관점에서 상당한 시간을 절약할 수 있다.

이 기사 2부에서는 속력, 접근성, 조직성을 소개할 것이다. 여러 가지 다양한 고려 사항이 있지만, 단순한 유지보수라는 목표는 동일하다. 따라서 화끈하고 새로운 디자인을 할 때 두통거리를 없애려면 웹 사이트를 미리 손봐놓자. 다음 달에 더 많은 내용으로 돌아오겠다.



참고자료

교육

제품 및 기술 얻기
  • Head First HTML with CSS & XHTML(Elizabeth and Eric Freeman, O'Reilly Media, Inc.): 표준화된 HTML과 XHTML에 대한 지식과 CSS를 어떻게 HTML에 적용하는지 방법을 소개한다.

  • JavaScript: The Definitive Guide(David Flanagan, O'Reilly Media, Inc.): 이 책은 자바스크립트를 사용해서 동적 웹 페이지로 작업하기 위한 광범위한 내용을 포함한다. 다음 판은 Ajax에 대한 두 장을 추가했다.

  • IBM 평가판 소프트웨어: DB2®, Lotus®, Rational®, Tivoli®, WebSphere® 같은 개발 도구와 미들웨어 제품군 평가판을 실험해보자.


토론


필자소개

Photo of Brett McLaughlin

Brett McLaughlin은 로고(작은 삼각형이 기억나는가?) 프로그래밍 언어 시절부터 컴퓨터로 작업을 해왔다. 최근에 McLaughlin은 자바와 XML 공동체를 통틀어 가장 잘 알려진 저자이자 프로그래머 중 한 명이 되었다. McLaughlin는 넥스텔 커뮤니케이션에서 일하며, 복잡한 엔터프라이즈 시스템을 구현하고 있다. 루트리스 테크놀로지에서는 응용 프로그램 서버를 실제로 작성했다. 가장 최근에는 오라일리 미디어에서 집필과 편집을 맡고 있다. McLaughlin이 선보일 책인 Head Rush Ajax는 수상 경력이 풍부하고 창의력으로 뭉친 Head First 시리즈를 Ajax에 접목한 내용이다. McLaughlin이 가장 최근에 쓴 책인 Java 1.5 Tiger: A Developer's Notebook은 최신 자바 기술을 다루는 책이다. McLaughlin이 쓴 고전적인 Java and XML은 자바 언어에서 XML 기술을 활용하는 모범 답안으로 남아있다.

Posted by 1010
98..Etc/GlassFish2008. 12. 10. 11:32
반응형

대부분의 엔터프라이즈 애플리케이션은 안전한 환경에서 실행할 필요가 있습니다. TLS(Transport Layer Security)/SSL(Secure Sockets Layer)은 포인트 투 포인트 보안 전송 메커니즘으로, 클라이언트 및 서버 간에 교환되는 메시지를 인증하고 메시지의 무결성 및 기밀성(confidentiality) 보장을 위해 사용할 수 있습니다. TLS/SSL(이 팁에서는 간단히 "SSL")은 대부분의 엔터프라이즈 애플리케이션 환경의 보안 요구사항을 충족하며 널리 채택되고 있습니다.

그러나 SSL에 의해 보호된 메시지 교환을 위해서는 서버가 SSL 서버로서 작동할 수 있어야 합니다. 이 팁에서는 GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키는 방법을 제시합니다.

각 단계별 설명으로 나아가기 전에, 키와 인증서와 같은 SSL의 기본 개념 몇 가지를 이해해야 하며 프로파일이라는 GlassFish v2의 개념도 이해할 필요가 있습니다.

키와 인증서

SSL에서 두 가지 중요한 개념은 키와 인증서입니다. 키는 클라이언트와 서버 사이의 트랜잭션에서 개인 정보 보호(privacy)와 신뢰(trust)를 구축하는 데 사용됩니다. SSL은 공개 키 암호화를 사용하며 이는 키 페어(key pairs)를 기반으로 합니다. 키 페어에는 하나의 공개 키와 하나의 개인 키가 포함됩니다. 데이터가 하나의 키로 암호화된 경우, 그것은 오직 그 페어의 나머지 한 키로만 해독될 수 있습니다.

인증을 위해서는 인증서가 사용됩니다. SSL을 사용하기 위해서는 서버에 연결할 수 있는 각 클라이언트의 IP 주소에 대해 각기 연관된 인증서가 있어야 합니다. 인증서는 서버 사이트의 소유자를 식별하며 관련 정보를 제공합니다. 인증서는 소유자에 의해 디지털로 암호화한 서명이 포함됩니다. 인증이 증요한 사이트의 경우, 인증서는 잘 알려진 신뢰성 있는 인증 기관으로부터 구입할 수 있습니다. 그러나 인증이 크게 중요하지 않은 사이트의 경우에는 자가 서명 인증서(self-signed certificate)를 사용할 수도 있습니다.

GlassFish v2 프로파일

GlassFish v2는 다양한 용도의 프로파일을 지원합니다. 각 프로파일은 애플리케이션 서버에 대한 구성 매개변수를 미리 설정하여 특정 유형의 용도로 최적화합니다. 세 가지 프로파일에는 개발자(developer), 클러스터(cluster) 및 엔터프라이즈(enterprise)가 있습니다.

개발자 프로파일은 개발 환경에서 사용하기 위해 GlassFish v2를 최적화합니다. 이는 구성 매개변수가 빠른 구동(fast startup)과 같은 목표는 지원하지만 로깅 또는 세션 복제와 같은 기능은 지원하지 않는다는 의미입니다. 클러스터 프로파일은 클러스터 생성 및 세션 복제를 가능하게 하는 구성 매개변수를 설정합니다. 클러스터는 GlassFish v2 인스턴스의 그룹으로 단일 논리 개체로서 관리하고 모니터할 수 있습니다. 엔터프라이즈 프로파일은 프로덕션 환경으로 GlassFish v2를 최적화합니다. 또한 로깅 및 기타 보안 관련 기능을 지원합니다.

GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키기

GlassFish v2를 SSL 서버로 작동시키는 단계는 애플리케이션 서버를 위해 사용된 프로파일에 따라 결정됩니다. 먼저 개발자 프로파일이 사용되는 경우의 프로세스를 살펴본 다음 엔터프라이즈 프로파일이 사용될 때의 프로세스를 검토합니다.

개발자 프로파일이 사용되는 경우

GlassFish v2 프로파일이 특정 유형의 용도를 위해 구성 매개변수를 미리 설정한다는 점을 상기하십시오. 이들 매개변수 중 하나가 Security Store인데 이것은 인증서와 키와 같은 보안 및 신용 관련 정보가 어떻게 저장되는지를 나타냅니다. 개발자 프로파일의 경우 Security Store 값은 JKS로 설정됩니다. 이 경우 서버에 대한 인증서와 키는 자바 키스토어 파일(keystore.jks)에 저장되며 인증서는 신뢰할 수 있는 CA에 의해 발행되며 인증서 파일(cacerts.jks)에 저장됩니다.

GlassFish v2를 설치할 때 서버 인증서로 자가 서명 인증서가 기본적으로 생성됩니다. 그러나 인증이 사용자의 사이트에서 중요한 경우라면, 자가 서명 인증서를 CA로부터의 디지털 서명 인증서로 교체할 필요가 있습니다. 이 섹션에서는 자가 서명 인증서를 대체하는 방법, CA에서 서버 인증서를 확득하는 방법 및 서버 인증서를 키스토어로 가져오는 방법을 설명합니다.

아래에 기술된 단계에서는 키 및 인증서 관리 툴인 keytool을 사용합니다. Keytool은 여러 버전의 자바 플랫폼, 스탠다드 에디션(자바 SE) 개발 킷(jdk)에서 사용 가능합니다. 한편 자바 SE 6에서는 keytool.에 몇 가지 필수 기능이 추가되었습니다. 아래의 명령은 jdk 6 버전의 keytool을 기반으로 합니다. keytool에 대한 자세한 정보는 JDK 툴 및 유틸리티를 참조하십시오.

다음은 애플리케이션 서버가 개발자 프로파일로 구성될 때 GlassFish v2를 SSL 서버로 작동시키기 위한 명령문입니다.

  1. 다음 명령을 수행하여 기본적으로 설치된 자가서명 인증서를 삭제하십시오(참고: 이 단계와 이후의 단계의 명령문은 포맷을 위해 여러 줄에 걸쳐 표시되었음).        keytool -delete -alias s1as -keystore keystore.jks
           -storepass <store_passwd>

    이 때 <store_passwd>는 키스토어에 대한 비밀번호(예: "mypass")입니다. s1as는 GlassFish v2 키스토어의 디폴트 alias입니다.

  2. 다음 명령을 수행하며 애플리케이션 서버를 위한 새로운 키 페어를 생성하십시오.       keytool -genkeypair -keyalg <key_alg>
          -keystore keystore.jks -validity <val_days> -alias s1as

    이 때 <key_alg>는 키 페어 생성을 위해 사용되는 알고리즘(예: RSA)이며 <val_days>는 인증서의 유효일 수(예: 365)입니다.

    키 페어 생성 외에도 해당 명령문은 공개 키를 자가 서명 인증서로 보호하고 인증서와 비밀 키를 alias에 의해 식별되는 새로운 키스토어 엔트리에 저장한다는 점에 유의하십시오.

    인증서의 이름이 사용자 사이트의 완전한 호스트 이름과 일치하도록 보장하는 것이 중요합니다. 그 이름이 일치하지 않으면 서버에 연결하는 클라이언트는 인증서의 이름이 사이트의 이름과 일치하지 않는다는 보안 경고를 받게 될 것입니다. 기본적으로 설치된 자가서명 인증서의 이름이 완전한 호스트 이름과 일치하는지 알고 있어야 합니다.

  3. 다음 명령을 수행하여 CSR(Certificate Signing Request)을 생성하십시오.       keytool -certreq -alias s1as -file <certreq_file>
          -keystore keystore.jks -storepass <store_passwd>

    여기서 <certreq_file>은 CSR이 저장되는 파일(예: s1as.csr)이며 <store_passwd>는 키스토어에 대한 비밀번호(예: changeit)입니다.

  4. VeriSign과 같은 CA에 CSR을 제출하십시오. 그러면 사용자는 응답으로 서명된 서버 인증서를 받게 될 것입니다. CA의 CA 인증서뿐만 아니라 응답에서 CA가 식별한, 중간에 발생한 모든 인증서를 브라우저로 가져와야 합니다.
  5. CA로부터 받은 서명된 서버 인증서를 마커 -----BEGIN CERTIFICATE-----와 -----END CERTIFICATE----- 를 포함하여 s1as.cert와 같은 파일에 저장하십시오. CA 인증서 및 모든 중간 CA 인증서를 다운로드하고 로컬 파일에 저장하십시오. CA 및 중간 CA 인증서를 브라우저로 가져오는 방법에 대해서는 브라우저 문서를 참조하십시오. Mozilla 및 Internet Explorer와 같은 다양한 브라우저로 CA 인증서를 가져오는 방법에 대한 정보는 CA에서 제공할 수도 있습니다.
  6. 원래의 자가 서명 인증서를 CA로부터 획득한 인증서(s1as.cert와 같은 파일에 저장)로 대체하십시오. 이를 위해 keytool 을 사용할 수 있으나 여러 단계를 필요로 합니다. 다음 자바 프로그램을 수행하면 더 쉽게 대체할 수 있습니다.

          import java.io.*;
          import java.security.Key;
          import java.security.KeyStore;
          import java.security.cert.Certificate;
          import java.security.cert.CertificateFactory;
          import java.security.cert.X509Certificate;
         
           
          public class Main {
              public static void main(String[] args) throws Exception {
                //args[] error checking logic omitted
                //file containing signed cert reply from CA
                String csrReplyFromCA = args[0];    
                //Path to GlassFish keystore.jks
                String keystoreLocation = args[1];  
                //Password for GlassFish keystore.jks
                String keystorePassword = args[2];  
                //The keyalias to be replaced : s1as in our example
                String selfSignedKeyEntry = args[3];
                 
                //create the signed Cert
                Certificate cert = null;
                FileInputStream fis =
                   new FileInputStream(csrReplyFromCA);
                CertificateFactory cf =
                   CertificateFactory.getInstance("X.509");
                cert = cf.generateCertificate(fis);
                 
                //now replace the original entry
                char[] passwordChars =
                   keystorePassword.toCharArray();
                KeyStore keystore = KeyStore.getInstance("JKS");
                keystore.load(new FileInputStream(keystoreLocation),
                   passwordChars);
                Key key = keystore.getKey(selfSignedKeyEntry,
                   passwordChars);
                keystore.setKeyEntry(selfSignedKeyEntry, key,
                   passwordChars, (new Certificate[]{cert}));
                keystore.store(new FileOutputStream(
                   keystoreLocation), passwordChars);
              }
          }

프로그램을 수행한 후에, GlassFish 키스토어 내의 인증서 s1as가 더 이상 원래의 자가 서명 인증서가 아니라 CA로부터 받은 인증서(response certificate)라는 것을 확인해야 합니다. 다음은 VeriSign으로부터 획득한 새 s1as 인증서와 원래의 s1as 인증서를 비교한 예입니다.

원래의 s1as (자가 서명):

Owner: CN=KUMAR, OU=Sun Java System Application Server, O=Sun
Microsystems, L=Santa Clara, ST=California, C=US
Issuer: CN=KUMAR, OU=Sun Java System Application Server, O=Su
n Microsystems, L=Santa Clara, ST=California, C=US
Serial number: 472acd34
Valid from: Fri Nov 02 12:39:40 GMT+05:30 2007 until: Mon Oct
30 12:39:40 GMT+05:30 2017

새로운 s1as (CA로부터 서명된 인증서 포함):

Owner: CN=KUMAR, OU=Terms of use at www.verisign.com/cps/test
ca (c)05, OU=Sun Java System Application Server, O=Sun Micros
ystems, L=Santa Clara, ST=California, C=US
Issuer: CN=VeriSign Trial Secure Server Test CA, OU=Terms of
use at https://www.verisign.com/cps/testca (c)05, OU="For Test
Purposes Only. No assurances.", O="VeriSign, Inc.", C=US
Serial number: 1375de18b223508c2cb0123059d5c440
Valid from: Sun Nov 11 05:30:00 GMT+05:30 2007 until: Mon Nov
26 05:29:59 GMT+05:30 2007

이러한 단계를 수행한 후에 GlassFish v2를 다시 시작하고 CA에 의해 발행된 서명된 서버 인증서를 사용할 수 있습니다.

클러스터 프로파일이 사용되는 경우

애플리케이션 서버가 클러스터 프로파일로 구성되는 경우, GlassFish v2를 SSL 서버로 작동시키려면 개발자 프로파일에 대해 수행했던 것과 동일한 단계를 수행합니다. 그러나 이 경우에 동일한 서버 키가 클러스터 내의 모든 애플리케이션 서버 인스턴스에 복제된다는 것을 확실하게 알아 둘 필요가 있습니다.

엔터프라이즈 프로파일이 사용되는 경우

엔터프라이즈 프로파일을 위한 Security Store 매개변수는 NSS이며 이는 네트워크 보안 서비스(Network Security Services)를 나타냅니다. NSS 보안 인프라에는 JKS 키스토어가 없으며 따라서 디폴트 GlassFish 키스토어가 없습니다.

GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키는 단계는 개발자 프로파일이 사용될 때와 엔터프라이즈 프로파일이 사용될 때가 대체로 유사합니다. 그러나 두 가지의 차이점이 있습니다. 첫 번째 차이는 프로세스의 첫 단계와 관계가 있습니다. JKS 키스토어가 없기 때문에 사용자는 비어 있는 키스토어(keystore.jks)로 프로세스를 시작합니다. 두 번째 차이는 프로세스의 마지막 단계와 관련이 있습니다. 결과로 얻은 서명 인증서를 JKS 키스토어로 가져오는 대신 사용자는 그것을 NSS 스토어로 가져옵니다. 즉, GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키려면 위에서 설명한 개발자 프로파일이 사용되는 경우와 동일한 단계를 수행하지만 비어 있는 키스토어로 시작하고 6단계를 다음으로 대체합니다.

  1. 다음 명령을 사용하여 키스토어로부터 서버 인증서를 위한 비밀키를 PEM(Privacy Enhanced Mail) 포맷으로 보내십시오.       keyexport.bat -keyfile serverkey.pem
          -keystore keystore.jks -storepass changeit -alias s1as

    이 명령문은 keyexport 유틸리티를 호출합니다. keyexport 패키지에 keyexport가 있습니다. 이 패키지는 Project Metro의 XWSS 다운로드 페이지에서 다운로드할 수 있습니다.

    위 명령에 대한 응답으로 키스토어 비밀번호 입력 프롬프트가 나타날 것입니다. 키스토어 비밀번호는 키 비밀번호와 동일하므로 리턴키를 누르면 됩니다.

    이것은 serverkey.pem 파일을 생성하며 이 파일에는 마커 -----BEGIN PRIVATE KEY----- 와 -----END PRIVATE KEY----- 아래에 서버 비밀 키가 포함됩니다.

  2. CA로부터 응답으로 온 서명 인증서(signed certificate reply)를 마커 -----BEGIN CERTIFICATE----- 와 -----END CERTIFICATE----- 를 포함하여 servercert.pem 파일에 추가하십시오. 마커 END PRIVATE KEY 아래에 그 응답을 추가하십시오.
  3. serverkey.pem 파일을 PKCS#12 파일(확장자가 .pfx인 파일)로 변환하십시오. "PKCS"는 RSA Security에 의해 고안 및 발행된 공개 키 암호화 표준의 그룹을 가리킵니다. PKCS#12는 비밀키와 그에 수반되며 비밀번호 기반의 대칭 키로 보호되는 공개 키 인증서를 저장하는데 흔히 사용되는 파일 형식을 정의합니다.

    serverkey.pem 파일을 PKCS#12 파일로 변환하는데 사용할 수 있는 툴은 여러가지가 있습니다. openssl 툴은 그러한 것 중 하나입니다. 다음은 openss1을 사용하여 파일을 변환하는 명령문입니다.

          openssl pkcs12  -export  -in serverkey.pem -out s1as.pfx

    위 명령에 대한 응답으로 익스포트 비밀번호 입력 프롬프트가 나타날 것입니다. "changeit"과 같은 비밀번호 또는 GlassFish 마스터 비밀번호를 입력하십시오.

    s1as.pfx 파일에는 이제 서명이 있는 서버 인증서 및 비밀 키가 포함될 것입니다.

  4. 원래의 s1as 자가서명 항목이 있으면 다음 명령을 수행하여 삭제하십시오.       certutil -D -n s1as -d $AS_NSS_DB

  5. pk12util 유틸리티를 사용하여 새 s1as.pfx 파일을 NSS 스토어로 가져오는 명령문은 다음과 같습니다.       pk12util -i s1as.pfx -d $AS_NSS_DB

    pk12util은 엔터프라이즈 프로파일을 위한 GlassFish 설치 임시 디렉토리 내에서 이용 가능한 NSS 유틸리티입니다. 그 유틸리티는 PCKS#12 파일을 NSS 스토어로 가져오거나 스토어에서 내보내는 데 사용됩니다.

    명령문에 대한 응답으로, NSS 소프트 토큰 및 PKCS#12 파일에 대한 비밀번호 입력 프롬프트가 나타날 것입니다. 적절한 비밀번호를 입력하십시오. 그러면 가져오기가 성공적으로 수행되었다는 다음과 같은 메시지를 볼 수 있을 것입니다.

          pk12util: PKCS12 IMPORT SUCCESSFUL  

고려해야 할 두 가지 경우가 있습니다.

  • 애플리케이션 서버 프로파일이 엔터프라이즈 프로파일이며 서버 키 페어가 이미 PKCS#12 파일에 있습니다. 스토어 내에 alias가 s1as인 항목이 이미 있는 경우에는 "엔터프라이즈 프로파일이 사용되는 경우"에서 설명한 대로 4단계를 수행하여 원래의 항목을 삭제하기만 하면 됩니다.      certutil -D -n s1as -d $AS_NSS_DB

    그리고 나서 5단계를 수행하여 새로운 s1as.pfx 파일을 NSS 스토어로 임포트합니다.

          pk12util -i s1as.pfx -d $AS_NSS_DB

    alias가 s1as인 항목이 스토어에 없으면 5단계만 수행하십시오.

  • 애플리케이션 서버 프로파일이 개발자 프로파일이며 서버 키 페어가 이미 PKCS#12 파일에 있습니다. 이러한 경우에 엔터프라이즈 프로파일이 사용되는 경우 에서 설명한 대로 5단계를 수행하여 원래의 s1as 항목을 삭제하기만 하면 됩니다. 그 후 pkcs12import 유틸리티를 사용하여 PCKS#12 파일을 GlassFish 키스토어로 가져오십시오.      pkcs12import.sh -file s1as.pfx -alias s1as
         -keystore keystore.jks -storepass changeit
         -pass <exp_password>

    이 때 <exp_password>는 PKCS#12 파일이 보내졌을 때 사용되었던 비밀번호(예: changeit)입니다.

    pkcs12import 패키지에 pkcs12import 유틸리티가 있으며 이 패키지는 Project Metro의 XWSS 다운로드 페이지에서 다운로드할 수 있습니다.

자세한 정보

GlassFish와 SSL에 대한 더 자세한 정보는 GlassFish v2로 SSL 및 CRL 확인(SSL and CRL Checking with GlassFish v2)를 참조하십시오.

또한 다음 리소스도 참조하십시오.


저자 정보

Kumar Jayanti는 썬마이크로시스템즈의 공학자 직원이며 웹 기술 및 표준 팀에서 일하고 있습니다. 현재 Kumar는 XML과 웹 서비스 보안 구현 부문에서 주역을 맡고 있으며 또한 최근에는 GlassFish 보안 모듈도 책임지게 되었습니다. 그는 2004년 초반부터 썬에서 웹 서비스 보안 분야에 관여해 왔으며 인도 Mumbai의 IIT에서 Computer Science 공학석사(M.Tech) 학위를 취득했습니다. 그의 관심 영역은 분산 컴퓨팅, CORBA, XML, 웹 서비스 및 보안 분야입니다.



이 글의 영문 원본은
http://java.sun.com/mailers/techtips/en ··· v07.html
에서 보실 수 있습니다.

"Java EE" 카테고리의 다른 글

Posted by 1010
98..Etc/GlassFish2008. 12. 9. 18:37
반응형

https://glassfishplugins.dev.java.net/eclipse33/

 

1. GlassFish V2를 받는다.

https://glassfish.dev.java.net/public/downloadsindex.html

(GlassFIsh 중 최근에 나온 안정버전)

 

2. Eclipse 3.3을 받는다.

http://www.eclipse.org/downloads/

 

3. GlassFIsh V2를 설치한다.

다운 받은 glassfish-installer-v2ur1-b09d-windows.jar 를 설치하려면
시스템에
자바가 설치되어 있어야 한다.

(JDK5 나 그 이상의 버전)

 

그리고 자바가 설치된 곳이 JAVA_HOME으로 설정되어 있어야 한다.

예) E:\java\jdk1.6.0_05\

 

실행에서 cmd로 콘솔을 띄운 후

jar파일이 있는 곳에서 다음을 실행한다.

java -Xmx256m -jar glassfish-installer-v2ur1-b09d-windows.jar 
cd glassfish
lib\ant\bin\ant -f setup-cluster.xml 
(다운 받은 GlassFish V2 UR1 버전이 Clustering 지원 버전일 때)
4. 이클립스 플러그인을 받는다.
다운 받은 이클립스는 압축을 풀면 설치가 끝난다.
자세한 그림과 영문으로 된 설명이 아래 주소에 있다.
https://glassfishplugins.dev.java.net/eclipse33/index.html
1) perspective를 "Java EE"로 바꾼다.
2) Server Tab에서 오른쪽 단추로 "New Server"마법사를 실행한다.
3) "Download addtional server adapters" 링크를 클릭한다.
4) GlassFish Java EE 5 Server를 선택한다.
5) License에 동의하고 GlassFish Adaptor를 받는다.
6) OK를 눌러 다운받는다.
7) 다 받은 후에 이클립스를 재시작한다.
8) 재시작후에 "New Server"마법사에서 GlassFish를 찾을 수 있다.
9) 자신의 원하는 GlassFIsh버전을 선택한다.
GlassFish V2를 선택해보겠다.
10) "Browse..." 버튼을 클릭해서 GlassFish가 설치된 곳을 정해준다.
11) 서버설정을 해 준다.
기본값은 다음과 같다. 나중에 자기가 원하는 값으로 바꿔준다.
Address : localhost
Server port Number : 8080
Admin Server Port Number : 4848
Domain Name : domain1
Administrator Id : admin
Administrator Password : adminadmin
12) new Server (GlassFish V2) 가 Servers 탭에 생겼다.
팝업메뉴에서 서버를 실행시킬 수 있다.
13) 서버를 실행하면 Started로 status가 바뀐다.
Console 탭에서 server log를 볼 수 있다.
14) 이제 Java EE5 Web Application을 만들어보자.
"Dynamic Web Project"를 만들자.
15) 프로젝트 이름을 쓰고,  Target runtime 을 GlassFish V2 Java EE 5로 정한다.
16) 다음단계에서 Web Application을 위한 Servelt 2.5(java EE 5 호환가능) 버전을 확인할 수 있다.
그리고 기본적으로 sun-web.xml을 배치 기술자로 사용하고 싶으면, 선택해라.(기본값이다)
17) 아주 간단한 index.jsp를 만들자.(이클립스에서 기본적으로 만들어주지 않는다.)
18) "Run on Server"를 클릭하면 Web Application이 deploy된다.
그리고 index.jsp 페이지를 브라우저에서 볼 수 있다.
 
만약 다음과 같은 에러가 난다면 eclipse plug-in을 업데이트 해야한다.
--------------------------------------------------------------------------------------------
Publishing to GlassFish V2...(Time of error: March 2, 2008 7:19:57 AM EST)
Reason:
java.lang.NullPointerException.
--------------------------------------------------------------------------------------------
관련 Forum
http://forums.java.net/jive/thread.jspa?messageID=265331&tstart=0
https://bugs.eclipse.org/bugs/show_bug.cgi?id=219627
wst 2.0.2 플러그인이 문제가 있다고 한다.
[Software Updates]-[Find and Install] - [Search for Updates of the currently installed features]
에서 업데이트 하면 자연스럽게 문제가 해결된다.

이 문제로 계속 삽질했음...ㅡ.ㅡ/
Posted by 1010
98..Etc/GlassFish2008. 12. 9. 11:52
반응형

GlassFish Community


GlassFish is an enterprise-quality Java EE 5 application server that offers advanced clustering, centralized administration, and best-in-class performance built by the GlassFish community. The Java EE SDKs contain Sun GlassFish Enterprise Server, previously named Sun Java System Application Server. Read the overview article, The GlassFish Community Delivering a Java EE Application Server.

Sun GlassFish Enterprise Server
Sun GlassFish Enterprise Server and SDKs
Sun GlassFish Enterprise Server v3 Prelude
 

For More Information

 
About the GlassFish Community
 About the GlassFish Community
Learn all about the GlassFish project, why Sun created it and answers to other common questions. Also see the Related GlassFish Technologies page.
» Read more
 
Use the Technology
 Use the Technology
Learn how to use the technology developed by the GlassFish community.
» Read more
 
Get It!
 Get It!
This is the place to download general distribution releases related to Project GlassFish.
» Read more
 
Improve It!
 Improve It!
Help to improve the Java EE 5 application server built by the GlassFish community, or discover how the GlassFish community is implementing technologies and features such as Grizzly, EJB 3.0 and Persistence, admin tools and more.
 
Also see GlassFish documentation, the GlassFish FAQ, the GlassFish Developers Spotlight page, and The Basics of GlassFish article. Use and contribute to Samples for Project GlassFish. And be sure to visit the Project GlassFish Quality page for information about getting and running Quicklook tests, links to bug stats and the latest test reports, details about TestNG, and more.
 

Support and Training

 
 Sun GlassFish Enterprise Server Subscriptions
A subscription is ideal for production deployments. Sun GlassFish Enterprise Server subscriptions offer a one-stop shop for product and service with immediate web access to software support, updates and upgrades, production and code support, training, and much more. Subscriptions are only valid for Sun GlassFish Enterprise Server installations.
 
 Sun GlassFish Enterprise Server: Introduction
Take this training course to learn about Sun GlassFish Enterprise Server's significant new features for ease of development and improved developer productivity, performance, monitoring, administration, clustering, and more.
 
Java EE Training and Certification
Find out about Java EE certification programs and additional Java EE training courses.
 
 
Spotlight

Download GlassFish v2  Download GlassFish v2
Sun GlassFish Enterprise Server v2, previously named Sun Java System Application Server 9.1, has been released as part of Java EE 5 SDK and Java Application Platform SDK. Download either of those SDKs.

» Read more spotlight stories
 
 
What's New

Daily news from the GlassFish Community is available at The Aquarium.
 
November 21, 2008
GlassFish and MySQL, Part 2: Building a CRUD Web Application With Data Persistence Learn how to use the NetBeans IDE with GlassFish and MySQL to build a create, read, update, and delete (CRUD) application.
 
November 21, 2008
Screencast: Build a Simple Web Application Using Eclipse and GlassFish v3 Prelude This screencast shows you how to create a simple Web application using JavaServer Pages and servlets in Eclipse 3.4, debug it, and rapidly deploy it directly on GlassFish v3 Prelude. Watch other Java EE screencasts too.
 
 
November 14, 2008
GlassFish and MySQL, Part 1: A Perfect Combination for Web Applications Learn why the combination of GlassFish and MySQL is a perfect choice for developing and deploying web applications.
 
November 14, 2008
GlassFish Update Center Find and install additional applications for GlassFish v2. View all modules or see the most popular or most recent modules.
 
November 12, 2008
Multilingual Java EE SDKs Now Available Update 6 versions of the Java EE 5 SDKs and Java Application Platform SDKs now offer multilingual support. Documentation for the SDKs is available in Japanese and Simplified Chinese and in several languages for the application server. Download the SDKs now.
 
November 6, 2008
GlassFish v3 Prelude Released Sun GlassFish Enterprise Server v3 Prelude improves productivity with rapid deployment technology and modular architecture based on OSGi. Read the overview and download it now.
 
November 6, 2008
GlassFish v3 Prelude Videos Learn more about GlassFish v3 Prelude in these three videos: Introducing GlassFish v3 Prelude, What's New in GlassFish v3 Prelude?, and Java EE 6 and GlassFish.
 
Posted by 1010
98..Etc/Etc...2008. 12. 9. 09:53
반응형
  ANYBBS(모바일 게시판) 통합 메뉴얼
 
    배포일 : 2008/03/27 [Download]
 
    메뉴얼 상세설명 보기 >>
 
  ANYBBS_ASP(모바일 게시판) 1.0
 
    배포일 : 2008/03/27 [Download]
 
    샘플 상세설명 보기 >>
 
  ANYBBS_PHP(모바일 게시판) 1.0
 
    배포일 : 2008/03/27 [Download]
 
    샘플 상세설명 보기 >>
 
  ANYBBS_JSP(모바일 게시판) 1.0
 
    배포일 : 2008/03/27 [Download]
 
    샘플 상세설명 보기 >>
 
  ANYBBS(모바일 게시판) BETA 0.1
 
    배포일 : 2008/03/05 [Download]
 
    샘플 상세설명 보기 >>
 
  수학 행렬 퀴즈
 
    배포일 : 2007/03/10 [Download]
 
    샘플 상세설명 보기 >>
 
  회사소개 폰페이지
 
    배포일 : 2007/03/12 [Download]
 
    샘플 상세설명 보기 >>
 
  Input Size 동적 처리 샘플
 
    배포일 : 2007/03/13 [Download]
 
    샘플 상세설명 보기 >>
 
  KUN 브라우저용 Table bordercolor 설정 방법
 
    배포일 : 2007/03/18 [Download]
 
    샘플 상세설명 보기 >>
 
  table 응용 가로 막대 그래프 샘플
 
    배포일 : 2007/04/06 [Download]
 
    샘플 상세설명 보기 >>
 
  모바일 미팅 서비스 샘플
 
    배포일 : 2007/05/31 [Download]
 
    샘플 상세설명 보기 >>
 
  모바일 화보 서비스 샘플
 
    배포일 : 2007/05/31 [Download]
 
    샘플 상세설명 보기 >>
 
  JSP 샘플 프로젝트
 
    배포일 : 2007/09/03 [Download]
 
  Calender 샘플
 
    배포일 : 2007/11/30 [Download]
 
    샘플 상세설명 보기 >>
Posted by 1010
98..Etc/error_all2008. 12. 7. 20:25
반응형
오라클이 여러번 발목을 잡는다. ㅋㅋ

톰켓을 설치하는데
java.net.BindException: Address already in use: JVM_Bind:8080
헉?? 엥? ㅋㅋ 8080포트를 쓰는 녀석이 또있었다. 곰곰히 생각해도 내가 곰이네..?
요즘 오라클을 설치하고 만지작거리는데 한참이여서 당연 오라클 문제일꺼라 생각했다.
아무튼 에러야 어쨌든 간에 http://localhost:8080을 쳐 넣었다.
어라? 로그인창이 뜨면서 XDB어쩌구라 하네...ㅎㅎ

Window에서 Oracle 9i를 설치하면서 XDB란 웹서비스도 함께 설치가 된것이다. 그리고 XDB란 녀석은 8080포트를 사용하고 있고.

아무튼 해결책은 XDB의 포트나 톰켓의 포트를 바꿔줘야한다.
방법은 캡쳐라도 하면 좋은텐데...워낙 게으른지라..
DBCA(Database configuration Assistant)를 실행시키고 -> 다음 -> 데이터베이스의 데이터베이스 옵션 구성체크(다음) -> 구성하고자하는 데이터베이스 선택(다음) -> 하단부분(표준 데이터베이스 기능)선택(다음) - > 사용자 정의 -> 포트번호구성|사용자 정의 값 지정
깔끔하게 재부팅~ㅎㅎㅎ
Posted by 1010
98..Etc/error_all2008. 12. 7. 11:40
반응형
ORA-01841: 년은 영이 아닌 -4713 과 +4713 사이의 값으로 지정해야 합니다

오렌지에서는 잘 도는 쿼리인데 JAVA 프로그램에서만 계속 에러가 발생하네요.



결국 문제는 날짜값이 문제였습니다.  "99991231" 을 날짜 값으로 넣은 칼럼이 있는데

거기서 발생하네요.  9i 에서는 99991231 까지는 문제 없는데, 여기다가



SELECT TO_DATE('99991231','YYYYMMDD') + 1 FROM DUAL;



이렇네요~



오라클에서 엔진에서 데이터 검색하는 방법이 사람이 생각하는 것과는 좀 차이가 있어 보입니다.



앞으로 MAX를 29991231 정도로 해야지..이정도면 나 죽을때 뭐라 하는사람 없겠쥐~






출처 : http://blog.naver.com/zzangeg1?Redirect=Log&logNo=30472771
Posted by 1010
98..Etc/error_all2008. 12. 1. 14:42
반응형
java heep memory ..
Posted by 1010
98..Etc/C2008. 12. 1. 13:34
반응형
설치는 알아서...


Posted by 1010
98..Etc/Server2008. 12. 1. 13:05
반응형

ㅁ samba 패키지 복사
 samba-3.0.23c-2.i386.rpm

ㅁ 패키지 설치
 rpm -Uvh samba-3.0.23c-2.i386.rpm

ㅁ samba 설정
 /etc/samba/smb.conf 파일 수정

ㅁ samba 사용자 추가
 smbpasswd -a 계정명

ㅁ 서비스 재시작
 service network restart
 service smb restart


ㅁ 기타 삼바 관련 자료
***********************************************************
* SAMBA 서버
***********************************************************

* 설치
삼바서버패키지 : samba-3.0.8-0.pre1.3
삼바클라이언트 패키지 : samba-client-3.0.8-0.pre1.3
삼바서버와 클라이언트에서 모두 사용하는 파일들 패키지 : samba-common-3.0.8-0.pre1.3
삼바서버 웹관리 패키지 : samb-swat-3.0.8-0.pre1.3
삼바서버 설정툴 패키지 : system-config-samba-1..21-1


# wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/samba-3.0.8-0.pre1.3.rpm
# wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/samba-client-3.0.8-0.pre1.3.rpm
# wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/samba-common-3.0.8-0.pre1.3.rpm
# wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/samb-swat-3.0.8-0.pre1.3.rpm
# wget http://ftp.superuser.co.kr/pub/fedora/core3/RPMS/system-config-samba-1..21-1.rpm
# rpm -Uvh --nodeps samba-3.0.8-0.pre1.3.rpm
# rpm -Uvh --nodeps samba-client-3.0.8-0.pre1.3.rpm
# rpm -Uvh --nodeps samba-common-3.0.8-0.pre1.3.rpm
# rpm -Uvh --nodeps samb-swat-3.0.8-0.pre1.3.rpm
# rpm -Uvh --nodeps system-config-samba-1..21-1.rpm


설치된 주요 파일들
/etc/logrotate.d/samba : 삼바로그를 관리하기 위한 삼바로그 로테이트 스크립트 파일
/etc/init.d/smb : 삼바데몬(nmbd, smbd)을 실행(종료, 재시작)하기 위한 스크립트파일
/etc/sysconfig/samba :삼바 제어판 설정파일
/usr/bin/smbstatus : 삼바서버에 로그인한 정보를 확인하기 위한 유틸리티
/usr/sbin/nmbd : 삼바 NetBIOS 데몬
/usr/sbin/smbd : 윈도우서버와 파일 및 프린터공유를 위한 삼바 주데몬
/usr/bin/smbclient : 삼바 클라이언트 유틸리티로서 삼바서버로 접속이 가능하도록 제공함.
/usr/bin/smbmount : 삼바 원격마운트 유틸리티
/usr/bin/smbumount : 삼바 원격마운트 해제 유틸리티
/etc/samba : 삼바의 주된 디렉토리
/etc/samba/lmhosts : 삼바서버 NetBIOS 호스트파일(삼바서버에서 사용하는 호스트정보파일)
/etc/samba/smb.conf : 삼바서버의 주설정파일
/usr/bin/smbpasswd : 삼바사용자 생성, 삭제 및 삼바사용자 패스워드 설정, 변경 유틸리티
/usr/bin/testparm : 삼바서버 설정파일(smb.conf)점검 유틸리티
/etc/xinetd.d/swat : 삼바서버의 웹관리를 위한 xinetd환경의 삼바설정파일
/usr/sbin/swat : 삼바서버 웹관리툴
/usr/bin/system-config-samba : X환경에서의 삼바설정 유틸리티
/var/log/samba/ : 삼바로그 저장 디렉토리
/etc/samba/smbusers : 리눅스ID와 삼바ID가 다를 경우에 이를 매칭하기 위한 매칭 테이블파일


* 삼바서비스 데몬
- 삼바데몬 시작
# /etc/init.d/smb start
# /usr/sbin/smbd -D
# /usr/sbin/nmbd -D


* 삼바 설정파일 smb.conf 다루기
/etc/samba/smb.conf 파일의 설정에는 다음과 같이 기본적으로 세부분으로 나뉘어져 있습니다.
  1. 글로벌 설정: 이 설정은 삼바서버가 공유하는 자원들에 공통적으로 적용할 기본값을 설정하는 곳이다.
                  이 글로벌설정은 [global]이라는 선언으로 시작하는 부분이다.
  2. 자동홈디렉토리 : 리눅스 사용자들의 홈디렉토리를 로그인홈으로 사용하기 위한 설정으로서 [homes]로 시작하는 부분의 설정이다.
  3. 프린터설정 : 네트워크 공유프린트에 대한 설정부분으로서 [printers]로 시작하는 부분의 설정이다.


- unix charset = cp949
  dos charset = cp949
  display charset = cp949
  리눅스(유닉스) 문자셋, 도스문자셋, 그리고 디스플레이 문자셋을 각각 설정한다.


- workgroup = superuser
  workgroup옵션에는 NT도메인명 또는 워크그룹명을 지정하면 된다.
  작업그룹명이므로 윈도우에서 Workgroup으로 사용하는 이름을 입력한다.


- server string = SUPERUSER File Server
  삼바서버의 이름쯤으오 생각하면 된다.


- hosts allow = 192.168.1. 192.168.2. 127.
  이 옵션은 삼바서버의 보안을 위하여 매우 중요한 옵션이다.
  이 옵션은 삼바서버로의 접근을 허용하기 위한 설정이다.


- load printers = yes
  자동프린트 목록을 사용하기 위한 값으로 yes를 주면 된다.
  네트워크 프린터를 삼바서버에서 관리하도록 하려면 반드시 yes로 설정한다.


- printcap name = /etc/printcap
  printcap파일의 위치가 다른 곳에 있다면 그곳을 지정한다.


- printing = bsd
  사용하는 프린터가 표준이 아니라면 주석처리를 하는 것이 좋다.
  현재 지원되는 프린터시스템의 종류로는 bsd, sysv, plp, lprng, aix, hpux, qnx 등이 있다.


- guest account =pcguest
  삼바서버의 guest사용자를 허용하고자 할 때에는 이 주석을 제거한다.
  이 옵션은 삼바서버에 손님권한으로 접속할 때 어떤 권한을 부여할 것인가를 설정한다.
  가능한 시스템에 특별한 권한이 없는 nobody와 같은 권한으로 설정한다.


- log file = /var/log/samba/log.%m
  이 설정은 삼바서버로 접속하는 개별 사용자들의 호스트정보를 %m 으로 받아서 개별 로그파일을 생성하도록 한다.
- log file = /var/log/samba/smbd.log
  접속한 호스트별로 로그파일을 사용하지 않는다면 하나의 로그파일을 사용할 수도 있다.


- max log size = 50
  로그파일의 용량크기를 KB단위로 제한하기 위한 옵션이다.
  제한하지 않으려면 0을 입력한다.


- security = share
  보안모드를 설정하는 것으로서 대부분의 삼바접속자들에게는 user레벨이 가장 알맞다.
  user레벨을 설정하면 삼바서버에 접속하는 사용자는 반드시 윈도우에서 사용하는 로그인ID와 동일해야 한다.
  만약 위의 설정과 같이 share레벨은 공유디렉토리등에 설정하는 것으로서 ID와 패스워드의 인증엇이 접속하는 것을 허용하는 레벨이다.
  또한 server레벨은 별도의 인증서버에서 ID와 패스워드인증을 받도록하는 레벨이다.
  가능하면 삼바서버보안을 위하여 user레벨을 사용하는 것이 좋다.


- password server = <NT-Server-Name>
  위의 security 옵션값이 server로 설정되었을 때에만 설정할 수 있는 옵션으로서 인증서버로 사용할 서버를 지정하는 옵션이다.


- password level = 8
  패스워드 문자로 대소문자를 조합하여 사용할 문자의 개수를 지정한 옵션이다.


- username level = 8
  삼바사용자명을 대소문자 조합하여 사용할 문자의 개수를 지정한 옵션이다.


- encrypt passwords = yes
  패스워드를 암호화하여 사용하려면 "encrypt passwords" 옵션값을 yes로 설정한다.


- smb passwd file = /etc/samba/smbpasswd
  이 옵션은 삼바사용자들의 암호파일의 위치를 지정한 것이다.


- unix password sync = Yes
  passwd program = /usr/bin/passwd %u
  passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authenticateion*tokens*updated*successfully*
  삼바사용자가 원격지에서 삼바패스워드를 변경할 수 있도록 하기위한 설정이다.
  이 설정을 사용하여 원격에서 패스워드를 변경하도록 허용하려면 앞의 encrypt passwords옵션값에 yes라고 해야하고 smb passwd file옵션에 반드시 삼바사용자패스워드파일의 경로를 지정한다.


- username map = /etc/samba/smbusers
  대부분 삼바에서 사용하는 ID와 리눅스계정ID는 동일하게 사용한다.
  만약 삼바사용자명과 리눅스 계정사용자명을 다르게 사용할 경우에 이를 매칭할 수 있도록 하기 위한 옵션이다.
  매칭테이블 파일을 /etc/samba/smbusers 파일로 사용하는 설정이다.


- include = /etc/samba/smb.conf.%m
  이 옵션은 삼바접속자의 플랫폼에 따라서 각기 다른 설정파일을 적용할 수 있도록 지원하기 위해 사용하는 옵션이다.
  %m 은 접속자 시스템의 NetBIOS이름으로 대체되어 접속한 사용자의 플랫폼종류에 따라서 각기 다른 삼바설정파일을 적용할 수 있다.


- socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
  삼바서비스 성능향상을 위한 옵션이다. speed.txt 파일을 참조하라.


- interfaces = 192.168.12.2/24 192.168.13.2/24
  삼바서버에서 두개 이상의 네트워크 인터페이스(NIC)를 사용하도록 지원하기 위한 옵션이다.


- remote browse sync = 192.168.3.25 92.168.5.255
  remote annouce = 192.168.1.255 192.168.2.44
  지역서브넷에서 삼바서버를 잘 인식하도록 하기 위하여 자기자신을 알리도록 한다.


- local master = no
  이 옵션은 특정 서브네트워크내에서 삼바서버가 로컬마스트브라우즈가 되도록 하는 옵션이다.


- os level = 33
  이 옵션은 마스터브라우즈 선거(master browser elections)에서 이 서버의 우선구너을 가질 수 있도록 허용한다.


- domain master = yes
  삼바서버가 Domain Master Browser가 되도록 한다.
  삼바가 Domain Master Browser가 되면 서브네트워크들로부터 브라우즈 목록을 수집하는 역할을 한다.


- domain logons = yes
  삼바서버를 윈도우95기반의 워크스테이션에 대한 도메인로그인서버 역할을 하도록 하려면 이 옵션을 사용하라.


- logon script = %m.bat
  각 플랫폼별 또는 각 사용자별로 로그온스크립트(login script)를 구분하여 사용할 수 있도록 한다.


- logon path = \\%L\Profiles\%U
  오직 윈도우95 또는 윈도우NT에서 로우빙프로파일(roving profile)을 어디에 저장해 둘것인가를 지정하는 설정이다.


- wins support = yes
  윈도우 인터넷네임서비스인 WINS를 지우너하기 위한 섹션이다.


- wins server = w.x.y.z
  WINS 서버를 지정한다.


- wins proxy = yes
  WINS프락시 : WINS기능이 없는 클라이언트 대신 질의에 답하도록 하기위한 옵션이다.


- dns proxy = no
  DNS의 nslookup을 사용하여 NetBIOS이름을 찾을 것인가 아닌가를 지정하는 옵션이다.


- preserve case = no
  short preserve case = no
  대소문자를 유지보존할 것인가를 지정하는 옵션이다.


- default case = lower
  DOS파일들의 기본 문자는 대문자로 인식한다.
  만약 lower로 설정하면 소문자로 인식한다.


- case sensitive = no
  대소문자의 구분을 할것인가 말것인가를 지정하는 옵션이다.


- [homes]
  comment = Home Directories
  browseable = no
  writable = yes
  사용자들의 홈디렉토리서버스에서 사용하는 기본적인 설정값이다.


- [netlogon]
  comment = Network Logon Service
  path = /home/netlogon
  guest ok = yes
  writable = no
  share modes = no
  도메인로그온 기능을 사용하기 위한 netlogin을 위한 설정이다.


- [Profiles]
  path = /home/profiles
  browseable = no
  guest ok = yes
  로우빙프로파일(roving profile)을 지정하려면 주석을 제거한다.


- [printers]
  comment = All Printers
  path = /var/spool/samba
  browseable = no
  guest ok = no
  writable = no
  printable = yes
  BSD타이의 프린트시스템을 가지고 있다면 개별 설정없이 바로 사용할 수 있다.


- [tmp]
  comment = Temporary file space
  path = /tmp
  read only = no
  public = yes
  삼바사용자들의 임시공유 디렉토리로 사용하기 위한 설정이다.


- [public]
  comment = Public Stuff
  path = /home/samba/public
  public = yes
  read only = no
  write list = @staff


  삼바사용자라면 누구나 접근이 가능한 공유디렉토로서 staff그룹에 등록된 사용자들을 제외한 일반사용잗ㄹ은 읽기전용으로만 사용할 수 있다.


* 삼바클라이언트 유틸리티 smbclient
사용형식 : smbclient '\\서버\서비스' [-U 삼바사용자] [패스워드] [옵션]
# smbclient -L localhost  -> 리눅스서버에 설치되어 있는 삼바서버의 접속 및 운용상태 확인
# smbclient '\\files\papa' -U papa -> 원격지의 file이라는 로스트로 papa라는 계정을 이용하여 삼바서버로 접속
  서버명으로 file이라는 호스트명을 사용하려면 /etc/samba/lmhosts파일에 호스트정보가 등록되어 있어야 한다.
# smbclient -L 192.168.0.100
# smbclient -U papa -L 192.168.0.100


* 삼바 원격마운트를 위한 smbmount와 smbumount
사용형식 : smbmount //호스트명(또는 IP)/서비스 /마운트포인트
           smbumount /마운트포인트
# smbmount //192.168.0.100 /tmp/share
# smbumount /tmp/share


* 삼바 사용자 관리
- 새로운 삼바사용자 생성과 패스워드 설정하기
  삼바서버에서 사용자를 드록하기 위해서는 smbpasswd라는 명령어를 사용한다.
  삼바사용자의 삼바패스워드 또는 smbpasswd라는 명령어를 사용한다.
  삼바사용자를 새로 생성하기 전에 리눅스 계정생성을 먼저해야 한다.
# useradd dhan
# passwd dhan
# smbpasswd -a dhan
- 삼바사용자 패스워드 변경하기
  root 사용자일 경우 : smbpasswd [options] [username]
  root 사용자가 아닌 경우 : smbpasswd [options]
- 삼바사용자 사용하지 못하도록 사용중지 설정하기
# smbpasswd -d dhan -> 사용 중지
# smbpasswd -e dhan -> 사용 재개
- 삼바사용자 삭제하기
# smbpasswd -x dhan


* 삼바서버의 로그인정보 확인을 위한 smbstatus
사용형식 : smbstatus [-P] [-b] [-d] [-L] [-p] [-S] [-s <설정파일>] [-u 삼바계정]
# smbstatus  -> 현재 삼바서버로 로그인되어 있는 사용자들을 확인
# smbstatus -b  -> 삼바서버로 로그인한 삼바사용자염을 간단하게 확인
# smbstatus -u papa -> 특정 계정의 삼바사용자의 로그인 정보만을 확인


* 삼바서버의 NetBIOS 호스트 파일 lmhosts
이 파일의 주된 목적은 삼바에서 사용할 호스트명정보(주로 IP주소)를 쉽게 찾을 수 있돍 하기위한 것이다.
이 파일에 등록된 호스트정보를 이용하여 smbclient와 같은 삼바유틸리티에서 등록된 호스트의 삼바서버로 접속할 때에 호스트명만으로 사용할 수 있다.


* 삼바설정파일 점검하기 위한 testparm
사용형식 : testparm [-s] [-h] [-x] [-L <서버명>] 설정파일명 [호스트 IP]
# testparm
# testparm -l 192.168.0.100


* 삼바서버를 이용한 웹폴더 구축
- 웹폴더 사용을 위한 삼바서버 설정
# useradd dhan
# passwd dhan
Changing password for user dhan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# smbpasswd -a dhan
New SMB password:
Retype new password:
Added user dhan.
# vi /etc/samba/smb.conf
[dhan]
comment dhan web folder
path = /home/dhan
valid users = dhan
read only = no
writable = yes
public = no
browseable = yes
printable = no
crate mask = 0750
# /etc/init.d/smb restart
- 개인 PC의 탐색기에서 운격삼바디스크 사용하기
- 웹브라우즈에서 웹폴더 형식으로 사용하기


출처 : http://bronks.tistory.com/75

Posted by 1010
98..Etc/Server2008. 12. 1. 12:58
반응형
정통부, 보안서버 구축 가이드 배포


이 가이드는
▲보안서버의 종류와 구축 절차
▲SSL방식 보안서버 구축 요령
▲응용프로그램방식 보안서버 구축 요령
▲웹호스팅업체의 보안서버 구축 요령
▲웹 페이지 적용 방법
등이 제시되어 보안서버를 설치하려는 웹사이트 운영자에게 실질적인 도움을  주도록 기획되었다.
Posted by 1010
98..Etc/Server2008. 12. 1. 11:54
반응형

보안서버를 구축하게 되면 아래와 같이 구동 시에 비밀번호를 입력해야 합니다. 이때 간단한 설정으로 자동으로 비밀번호를 입력할 수 있습니다.

가. 비밀번호 자동 입력

[root@smson bin]# ./apachectl startssl
[Thu Oct 30 15:18:43 2008] [alert] httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Apache/1.3.33 mod_ssl/2.8.24 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server analysis.wsos.co.kr:443 (RSA)
Enter pass phrase:

Ok: Pass Phrase Dialog successful.
./apachectl startssl: httpd started

[root@smson ssl]# vi pw.sh
#!/bin/sh
echo "password"
[root@smson ssl]# vi /usr/local/apache-ssl/conf/httpd.conf
<IfModule mod_ssl.c>
#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog  exec:/usr/local/apache-ssl/conf/ssl/pw.sh

 나. 부팅시 자동 시작

 리눅스가 부팅 할때 /etc/rc* 에 있는 파일들을 실행합니다. rc 뒤에 붙은 숫자는 run level을 뜻합니다. 리눅스는 부팅 시에 run level을 지정할 수 있는데 일반적인 작업에서 사용되는 run level은 3입니다. 아래와 같이 간단한 스크립트를 작성하여 링크를 시켜 주시면 됩니다.

[root@smson bin]# cat apachectlstartssl
#!/bin/sh
/usr/local/apache-ssl/bin/apachectl startssl
[root@smson bin]# cd /etc/rc
rc          rc1.d       rc3.d       rc5.d       rc.d        rc.sysinit 
rc0.d       rc2.d       rc4.d       rc6.d       rc.local   
[root@smson bin]# cd /etc/rc3.d/
[root@smson rc3.d]# rm -rf S99apache
[root@smson rc3.d]# ln -s /usr/local/apache-ssl/bin/apachectlstartssl S99apache
[root@smson rc3.d]# ls -al
total 12
drwxr-xr-x    2 root     root         4096 Oct 30 17:50 .
drwxr-xr-x   10 root     root         4096 Oct 30 17:30 ..
lrwxrwxrwx    1 root     root           15 Jun 17  2005 K03rhnsd -> ../init.d/rhnsd
...
lrwxrwxrwx    1 root     root           43 Oct 30 17:50 S99apache -> /usr/local/apache-ssl/bin/apachectlstartssl
lrwxrwxrwx    1 root     root           41 Jun 17  2005 S99mysql -> /usr/local/mysql/share/mysql/mysql.server
[root@smson rc3.d]#

Posted by 1010
98..Etc/Server2008. 12. 1. 11:53
반응형

1. 개인키 생성

개인키 생성

개인키는 1024bit 로 생성하는 것이 좋습니다. 기본값은 512bit 입니다. 개인키 분실시에는 인증서를 재발급 받아야 하기에 잘 백업해 두어야 한다.


2. 인증요청서( CSR ) 생성

CSR( Certificate Signing Request )은 SSL 서버를 운영하는 회사의 정보를 암호화하여 인증기관으로 보내 인증서를 발급받게 하는 일종의 신청서입니다. CSR은 ASCII 텍스트 파일로 생성됩니다. CSR을 생성할 때 서버의 식별명을 입력하게 됩니다.식별명은 각 서버를 공유하게 나타내는 이름으로 다음과 같은 정보를 포함합니다.

CSR 생성

주의사항

  • Common Name 에는 인증서를 설치할 사이트의 도메인의 이름을 정확하게 입력하셔야 합니다.
  • Common Name 에는 IP 주소, 포트번호, 경로명, http:// 나 https:// 등은 포함할 수 없습니다.
  • CSR 항목에는 < > ~ ! @ # $ % ^ * / \ ( ) ? 등의 특수 68 문자를 넣을 수 없습니다.
  • CSR 생성 후 서버에 개인키 (Private Key) 가 생성됩니다. 개인키를 삭제하거나 분실할 경우 인증서를 발급 받아도 설치가 불가합니다. 따라서 꼭 개인키를 백업 받아 두셔야 합니다.
  • 정보입력과정 마지막에 나오는 A challenge password 와 An optional company name 두 항목은 입력하지 마시고 Enter 만 누르고 넘어가야 합니다. 두 정보가 입력될 경우 잘못된 CSR 생성될 수 있습니다.


3. 테스트 인증서 생성 및 웹서버에 설정

SSL 테스트 인증서

테스트 인증서를 생성 후 웹서버에 아래와 같이 개인키와 인증서를 설정해 주신 후 재 시작 합니다.

인증서 설정


4. 웹브라우저에서 확인

보안경고

공인된 인증기관에서 발급되지 않은 인증서의 경우는 사용자가 처음 요청시에 위와 같이 '보안경고' 창을 노출합니다. 브라우저 하단 또는 상단의 열쇠모양의 아이콘을 클릭하여 인증서를 확인 하실 수 있습니다.

인증서 확인


5. 인증서 신청 및 발급

위에서 생성된 CSR 파일을 보면 base64 형식의 내용을 확인 하실 수 있습니다. 이문서의 첫 줄 -----BEGIN … 부터 마지막 줄 -----END … 까지 복사하여 지정된 SSL 접수페이지에 복사하여 붙여 넣은 뒤 입력정보와 함께 전송하면 접수가 완료됩니다.

대부분의 업체가 이메일을 통해 인증서를 수신하게 되는데, 보통 도메인인증파일과 루트인증파일 두 개를 압축해서 전달합니다.
인증서를 해당 서버에 저장 후 httpd.conf 파일에 설정해 주시면 됩니다.

국내구분 외산 국산
명칭 Comodo TrustSSL thwate VeriSign KICA
가격 40,000 300,000 240,000 440,000 120,000

SSL 인증서의 경우 가격이 저렴하다고 해서 SSL 보안서버의 성능이 떨어지거나 신뢰도가 낮은 것은 아닙니다. 가격은 브랜드 인지도, 로열티, 취급수수료에 의해 결정이 됩니다. 도메인 주소가 업체별로 차이가 있는 것과 동일하다고 생각하시면 됩니다. 각 업체별로 다양한 상품이 있는데, 값비싼 상품일수록 책임보험료가 높게 책정되어 있습니다. 문제가 발생 시에 발급기관에서 문제 발생 시에 책정된 보험료를 해당 사이트 사용자에게 보상을 해 주는데, 회원수가 많거나 회원들의 중요정보를 취급하는 경우가 아니고서는 비싼 상품을 선택할 필요는 없습니다.

내부의 서비스 운영 형태에 따라서 Wildcard 또는 Multi-Domain 인증서를 사용하시면 됩니다.  최근에는 해당 호스팅업체에서도 리셀러 방식의 판매대행을 하고 있고 가격도 더 저렴하기에 현재 서비스를 받고 있는 업체에 문의해 보는 것도 좋은 방법인 것 같습니다.


6. 인증서 확인

인증서 확인


7. 기타

보안경고

"보안경고창"은 해당 페이지 소스 내 오브젝트중에 https:// 가 아닌 http:// 로 절대경로가 지정된 것이 있어서 그렇습니다. 이를테면 웹페이지의 이미지 경로를 다른 도메인의 것을 사용했을 때, 해당 요청이 https 아닌 http라서 보안이 안 되는 요청이 있다는 경고창입니다.

HTTP 암호화

HTTP 패킷을 보았을 때 관련 정보가 암화화 된 것을 확인 하실 수 있습니다.

8. 참고

Posted by 1010
98..Etc/Server2008. 12. 1. 11:52
반응형

보안서버 SSL 

먼저 Apache와 mod_ssl의 버전을 확인 후에 알맞은 openssl 을 설치해야 합니다. 해당 정보는 www.openssl.org , www.modssl.org 에서 확인 하실 수 있습니다. 알맞는 버전을 확인 후 해당 사이트에 소스를 다운로드 합니다.

보안서버 SSL

1. openssl 설치

[root@smson openssl-0.9.8]# tar xvfz openssl-0.9.8.tar.gz
[root@smson openssl-0.9.8]# ./config --prefix=/usr/local --openssldir=/usr/local/openssl
[root@smson openssl-0.9.8]# make; make install
[root@smson openssl-0.9.8]# ls -al /usr/local/openssl/
total 36
drwxr-xr-x    6 root     root         4096 Oct 29 00:08 .
drwxr-xr-x   24 root     root         4096 Oct 29 00:07 ..
drwxr-xr-x    2 root     root         4096 Oct 29 00:08 certs
drwxr-xr-x    6 root     root         4096 Oct 29 00:07 man
drwxr-xr-x    2 root     root         4096 Oct 29 00:08 misc
-rw-r--r--    1 root     root         9381 Oct 29 00:08 openssl.cnf
drwxr-xr-x    2 root     root         4096 Oct 29 00:08 private


2. mod-ssl 모듈 Apache 소스에 설정

[root@smson work]# tar xvfz mod_ssl-2.8.24-1.3.33.tar.gz
[root@smson work]# cd mod_ssl-2.8.24-1.3.33
[root@smson mod_ssl-2.8.24-1.3.33]# ./configure --with-apache=../apache_1.3.33 --with-ssl=../openssl-0.9.8 --prefix=/usr/local/apache-ssl

* MaxClients 값을 튜닝하기 위해 아래와 같이 HARD_SERVER_LIMIT 값을 수정한다.
[root@ihelpers apache_1.3.33]# vi src/include/httpd.h
#define HARD_SERVER_LIMIT 1024


3. Apache 설치

[root@smson apache_1.3.33]# export SSL_BASE=../openssl-0.9.8
[root@smson apache_1.3.33]# ./configure --prefix=/usr/local/apache-ssl --enable-module=so --enable-rule=SHARED_CORE  --enable-shared=max --enable-module=ssl  --enable-shared=ssl  --enable-module=rewrite  --enable-shared=rewrite  --enable-module=expires  --enable-shared=expires
[root@smson apache_1.3.33]# make
[root@smson apache_1.3.33]# make certificate  -- 테스트인증서 생성시 필요(생략해도 큰 문제 없음)
[root@smson apache_1.3.33]# make install

보안서버 SSL

4. 설정

보안서버 SSL

보안서버 SSL의 경우는 헤더도 암호화가 되므로 일반적인 웹사이트 설정처럼 443 포트를 공유할 수 없기에, 다른 도메인에 대한 추가 설정 시에는 443 포트가 아닌 다른 포트를 사용해야 합니다. 이와 같은 이유로 많은 도메인에 대한 설정이 필요할 경우는 Wildcard SSL 또는 Multi-Domain SSL 인증서를 고려해 보는 것이 좋습니다.

아래는 현재 저희가 설정하여 사용하고 있는 설정값 예 입니다.

[root@smson conf]# vi httpd.conf

DocumentRoot "/data1/wwwroot/analysis/html"
ServerName analysis.wsos.co.kr
ServerAdmin root@smson
ErrorLog /dev/null
TransferLog /dev/null
CustomLog /dev/null common

SSLPassPhraseDialog  exec:/usr/local/apache-ssl/conf/ssl/pw.sh

SSLLog      /var/log/ssl_engine_log

SSLCertificateFile $path/analysis_wsos_co_kr.crt
SSLCertificateKeyFile $path/analysis_wsos_co_kr.key
SSLCACertificateFile $path/analysis_wsos_co_kr.ca-bundl



5. 실행

보안서버 SSL

아래와 같이 '-DSSL' 로 SSL 보안서버 모드로 실행된 것을 확인 하실 수 있습니다.  일반 웹서비스는 'start' 옵션으로 실행하시면 됩니다.  실행 시에 비밀번호 자동입력 및 부팅시 자동실행과 같은 내용은 아래 내용을 참고하여 주십시오.

보안서버 SSL


6. 참고



출처 : http://sangmo.tistory.com/132

Posted by 1010
98..Etc/Server2008. 12. 1. 11:50
반응형

보안서버 구축 가이드- Ver 0.9 - (pdf)

보안서버 구축 가이드
- Ver 0.9 -
2007. 2
주 의 사 항
이 가이드의 사용에는 어떠한 제한도 없지만 다음과 같은 사항에 주의하여야 합니다.
◦ 문서 내에 언급된 상표, 제품명 등에 대한 권리는 각 상표 또는 제품을 소유한
해당 기업에 있으며, 설명을 위해 특정 회사 제품명이나 화면이 표시된 경우
보안서버 구축을 위한 참고자료로써의 고유 목적 외에 어떠한 다른 목적도
없으며 그렇게 이용되어서도 안됩니다.
◦ 문서 내에 기술된 예시 등은 일반 사용자, 기업 등에 있을 수 있는 고유한
환경을 고려하지 않았으므로 실제 환경에서는 그대로 적용되지 않을 수 있습니다.
그러므로 각 장에 기술된 내용을 적용할 때에는 먼저 각 사용자, 기업의 고유한
환경에 적합한지 확인할 필요가 있으며, 내용의 오류로 인해 발생하는 피해에
대하여 본 가이드의 발행기관은 책임을 지지 않습니다.
※ 이 가이드의 내용 중 오류를 발견하였거나 내용에 대한 의견이 있을 때에는
securekorea@kisa.or.kr로 해당 내용을 보내주시기 바랍니다.
가이드의 구성
이 가이드는 사용자들의 이해를 돕기 위하여 다음과 같이 구성되어 있습니다.
Ⅰ 장과 Ⅱ 장은 사용자들이 반드시 알아야 하는 기본적인 사항들입니다. 꼭 읽어보시고
각 업체의 환경에 적합한 보안서버를 선택해야 합니다.
보안서버 구축 방법을 선택하였다면, Ⅲ 장 ~ Ⅴ 장 중 상황에 맞는 내용을 참조하시면 됩니다.
각 장에 소개되는 설치 방법과 오류시 대처방법을 숙지한 후 보안서버 구축 전문업체에
연락하시면 보다 자세한 안내를 받을 수 있습니다.
Ⅵ 장은 보안서버를 구축한 후, 실제 웹페이지에서 수정해야 할 내용에 관한 가이드입니다.
웹페이지 적용 방법과 실제 사례를 포함하고 있으며, 보안서버가 적용되었는지 확인하는
방법을 알아보실 수 있습니다.
Ⅶ 장은 정보통신부에서 추진하고 있는 보안서버 구축 확대에 관한 FAQ를 정리한 것입니다.
2005년부터 현재까지 웹사이트 운영자들이 자주 질문하신 내용을 정리한 것이므로
우선 궁금하신 내용이 있는지 확인한 후 추가적인 문의는 보안서버전문협의회 홈페이지
(www.kisia.or.kr/secureserver)를 참조하거나 securekorea@kisa.or.kr로 문의하시기 바랍니다.
부록에는 멀티도메인 SSL 인증서와 SSL 가속기에 대한 설명이 포함되어 있습니다.
목 차 내 용
Ⅰ. 보안서버란
- 보안서버의 정의 및 필요성
- 보안서버 관련 규정
Ⅱ. 어떻게 시작하지?
- 보안서버의 종류
- 전문 구축업체 목록 및 연락처
Ⅲ. SSL 방식 보안서버 구축하기
- SSL 방식 보안서버 소개 및 설치방법
- 오류시 대처방법
Ⅳ. 응용프로그램 방식 보안서버 구축하기
- 응용프로그램 방식 소개 및 설치방법
- 오류시 대처방법
Ⅴ. 웹호스팅업체의 보안서버 구축하기
- 웹호스팅서비스 이용자와 제공업체를 위한
보안서버 구축절차
Ⅵ. 웹페이지 수정 및 적용 확인하기
- 웹페이지 적용방법 및 사례
- 보안서버 적용 확인하는 방법
Ⅶ. 제도 관련 FAQ - 보안서버 구축 확대 관련 질문과 답변
부록 - 멀티도메인 SSL 인증서 및 SSL 가속기 소개
목 차
Ⅰ. 보안서버 (Secure Server)란 ··························································1
1. 보안서버의 정의 ·······················································································1
2. 보안서버 구축의 필요성 ·········································································1
가. 정보유출 방지(sniffing 방지) ··························································1
나. 위조사이트 방지(phising 방지) ······················································2
다. 기업의 신뢰도 향상 ··········································································2
3. 보안서버 관련 규정 ·················································································3
Ⅱ. 어떻게 시작하지? ·············································································4
1. 보안서버의 종류 ·······················································································4
가. SSL 방식 ·····························································································4
나. 응용프로그램 방식 ············································································5
2. 보안서버 구축 전문업체 ·········································································6
3. 보안서버 구축 절차 흐름도 ···································································7
Ⅲ. SSL 방식 보안서버 구축하기 ······················································8
1. 소개 및 인증서 발급 절차 ·····································································8
가. 개요 ······································································································8
나. 보안서버 구축 절차 ··········································································9
2. 설치 과정 ·································································································10
2.1 IIS 서버에서의 설치 과정 ·······························································10
가. 개인키 생성 및 CSR 생성 방법 ················································10
나. SSL 설정 ···························································································16
2.2 아파치 서버에서의 설치 과정 ························································19
가. 아파치 서버에 Openssl과 MOD_SSL의 설치 방법 ·················19
나. 개인키 생성 및 CSR 생성 방법 ··················································21
다. 인증서 설치 방법 ············································································22
3. 오류 발생시 대처방법 ···········································································24
Ⅳ. 응용프로그램 방식 보안서버 구축하기 ··································30
1. 소개 및 보안서버 구축 절차 ·······························································30
가. 개요 ····································································································30
나. 보안서버 구축 절차 ········································································31
다. 프로토콜 설명 ··················································································33
2. 설치 과정 ·································································································34
가. 클라이언트 모듈 설치 ····································································34
나. 서버 모듈 설치 ················································································35
다. 사이트 접속 ······················································································36
3. 오류 발생시 대처방법 ···········································································38
Ⅴ. 웹호스팅업체의 보안서버 구축하기 ·········································40
1. 보안서버 구축 절차 ···············································································40
2. 보안서버 구축 전 확인사항 체크 ·······················································41
가. 발급 도메인에 대한 정보 확인 ····················································41
나. CSR 생성 및 보안서버 적용 ························································43
3. 웹호스팅서비스 제공업체의 고려사항 ···············································43
가. 서비스 제공 서버에서 개별 인스턴스로 서비스가 가능한지 여부 ····· 43
나. SSL 보안 포트 서비스 가능 여부 ···············································44
다. SSL 서비스 가능 여부 ···································································44
라. 인증서 신청하기 ··············································································45
4. 보안서버 구축상태 확인 ·······································································46
Ⅵ. 웹 페이지 수정 및 적용 확인하기 ···········································47
1. 웹 페이지 수정 방법 및 사례 ·····························································47
가. 전체 페이지 암호화하기 ································································47
나. 페이지별 암호화하기 ······································································50
다. 프레임별 암호화하기 ······································································53
라. 체크박스를 이용한 선별적 암호화하기 ······································60
2. 보안서버 적용 확인하기 ·······································································62
가. 보안서버 적용 확인 방법 ······························································62
나. 인증서의 암호화 상태 확인 방법 ················································65
Ⅶ. 제도 관련 FAQ ··············································································69
부록 A. 멀티도메인 SSL 인증서 소개 ···········································74
부록 B. SSL 가속기 소개 ···································································84
그림목차
<그림 1-1> 보안서버 구축의 필요성 ··························································2
<그림 2-1> SSL 방식의 보안서버 실행 확인 ·············································5
<그림 2-2> 응용프로그램 방식의 보안서버 실행 확인 ····························5
<그림 2-3> 보안서버 구축 절차 흐름도 ······················································7
<그림 3-1> SSL 방식의 보안서버 개념도 ···················································8
<그림 3-2> SSL 방식 보안서버 구축 절차 ·················································9
<그림 3-3> Mod-SSL 설치 확인 예 ····························································20
<그림 4-1> 응용프로그램 방식 보안서버 구축 절차 ······························31
<그림 4-2> 서버 플랫폼의 구성 ··································································32
<그림 4-3> 응용프로그램 방식 프로토콜 ··················································34
<그림 4-4> 암호화 모듈 설치를 위한 보안경고창 ································36
<그림 4-5> 암호화 모듈 설치 ······································································37
<그림 4-6> 암호화 통신 확인 ······································································37
<그림 5-1> 웹호스팅업체의 보안서버 구축 절차 ····································41
<그림 5-2> WHOIS를 통한 도메인 정보 확인 ········································42
<그림 5-3> Mod-SSL 설치 확인 예 ····························································45
<그림 6-1> 평문 통신을 위한 HTML 소스코드 ······································48
<그림 6-2> https 프로토콜을 호출하기 위한 HTML 소스코드 ··········· 48
<그림 6-3> 아파치 서버에서의 Redirection ··············································49
<그림 6-4> HTML Tag를 이용한 Redirection ·········································49
<그림 6-5> Javascript를 이용한 Redirection ············································50
<그림 6-6> 페이지별 암호화 대상 메뉴 ····················································50
<그림 6-7> 페이지별 암호화 대상 메뉴의 소스코드 ······························51
<그림 6-8> SSL이 적용된 페이지의 경고창 ·············································51
<그림 6-9> http 평문 통신 주소가 호출되는 웹페이지의 속성 ···········52
<그림 6-10> https를 통한 암호화 통신 ·····················································52
<그림 6-11> http를 통한 평문 통신 ···························································52
<그림 6-12> 프레임이 포함된 웹페이지 ····················································54
<그림 6-13> topmenu.htm을 https로 호출하기 ·······································54
<그림 6-14> topmenu.htm과 main.htm을 https로 호출하기 ················55
<그림 6-15> 비암호화된 페이지 호출하기 ················································55
<그림 6-16> HTTP 호출시 80 포트 모니터링 결과 ································56
<그림 6-17> topmenu.htm만 암호화하여 호출하기 ································56
<그림 6-18> topmenu.htm의 내용만 암호화된 모니터링 결과 ············57
<그림 6-19> topmenu.htm과 main.htm을 https로 호출하기 ················58
<그림 6-20> index.html의 내용만이 모니터링된 결과 ···························58
<그림 6-21> https를 이용한 호출 ·······························································59
<그림 6-22> https 호출시 80 포트 모니터링 결과 ·································59
<그림 6-23> 로그인시 보안접속 체크박스를 이용하기 위한 HTML 소스코드······61
<그림 6-24> 평문 통신 ··················································································63
<그림 6-25> 암호화된 통신 ··········································································63
<그림 6-26> 암호화 통신이 이루어지고 있음을 보여주는 자물쇠 이미지 ····· 64
<그림 6-27> 보안이 적용된 웹페이지 등록정보 ······································65
<그림 6-28> 보안이 적용된 웹페이지 접속 ··············································66
<그림 6-29> 자물쇠 이미지를 통한 암호화 방식 확인 ··························66
<그림 6-30> 보안이 적용된 웹페이지의 등록정보 중 인증서 버튼 ····· 67
<그림 6-31> 보안이 적용된 웹페이지의 인증서 기본 정보 확인 ········ 67
<그림 6-32> 보안이 적용된 웹페이지의 인증서 상세정보 확인 ··········68
<그림 A-1> 멀티도메인 SSL 인증서의 CN이 있는 도메인과 없는 도메인의 동작····· 76
<그림 A-2> 암호화 통신이 이루어지고 있음을 보여주는 자물쇠 이미지 ····· 76
<그림 A-3> 다수의 CN이 포함된 멀티도메인 SSL 인증서 ··················77
<그림 A-4> 보안이 적용된 웹페이지 속성 확인 ·····································77
<그림 A-5> 아파치 서버에서 평문 통신을 위한 가상호스팅 설정 ······ 78
<그림 A-6> 아파치 서버에서 암호화 통신을 위한 가상호스팅 설정 ······· 79
<그림 A-7> CMD command 실행 모습 ····················································80
<그림 A-8> IIS 관리자에서 Site Identifier와 Host header 값 확인 ···80
<그림 A-9> SecureBindings 메타베이스 추가 ··········································81
<그림 A-10> SecureBindings을 통한 443 포트 공유 ······························81
<그림 A-11> SecureBindings 제거 ······························································81
보안서버 구축 가이드 1
Ⅰ. 보안서버(Secure Server)란
1. 보안서버의 정의
보안서버란 인터넷상에서 사용자 PC와 웹 서버 사이에 송수신되는
개인정보를 암호화하여 전송하는 서버를 의미합니다. 또한 보안서버는
해당 전자거래 업체의 실존을 증명하여 고객과 웹 서버간의 신뢰를
형성하고, 웹 브라우저와 웹 서버간에 전송되는 데이터의 암/복호화를
통하여 보안 채널을 형성합니다.
인터넷상에서 송․수신되는 개인정보의 대표적인 예로는 로그인시 ID/
패스워드, 회원가입시 이름/전화번호, 인터넷 뱅킹 이용시 계좌 번호/
계좌 비밀번호 등이 해당됩니다.
인터넷 상에서 암호화되지 않은 개인정보는 가로채기 등의 해킹을 통해
해커에게 쉽게 노출될 수 있으므로, 웹 서버에 보안서버 솔루션을
설치하면 해커가 중간에 데이터를 가로채도 암호화 되어 있어 개인정보가
노출되지 않습니다.
2. 보안서버 구축의 필요성
가. 정보유출 방지(sniffing 방지)
학교, PC방, 회사 등의 공용 네트워크를 사용하는 PC에서 보안서버가
구축되지 않은 사이트로 접속할 경우, 개인정보가 타인에게 노출될
가능성이 매우 높습니다. 스니핑 툴(sniffing tool)을 사용할 경우
다른 사람의 개인정보(ID/패스워드/이메일/주민번호/주소/전화번호 등)을
손쉽게 얻을 수 있습니다. 따라서 보안서버는 개인정보보호를 위해서
반드시 필요합니다.
2 보안서버 구축 가이드
나. 위조사이트 방지(phising 방지)
보안서버가 구축된 사이트를 이용하여 피싱(phishing) 공격을 시도하기는
어렵습니다. 따라서 보안서버가 구축된 사이트는 피싱에 의한 피해를
줄일 뿐만 아니라 고객의 신뢰를 얻을 수 있습니다.
다. 기업의 신뢰도 향상
고객의 개인정보를 안전하게 관리하는 기업이라는 이미지를 부각시킬 수
있습니다. 인터넷상의 암호화되지 않은 개인정보는 가로채기 등의
해킹을 통해 해커에게 쉽게 유출될 수 있습니다. 암호화된 개인정보는
해킹을 당해도 보호받을 수 있습니다.
<그림 1-1> 보안서버 구축의 필요성
※ 피싱(Phishing)이란, 개인정보(private data)와 낚시(fishing)를 합성한 조어로써,
금융기관 등의 웹사이트나 거기서 보내온 메일로 위장하여 개인의 ID 및
패스워드, 신용카드번호, 계좌정보 등을 빼내 이를 불법적으로 이용하는
사기수법을 뜻한다.
보안서버 구축 가이드 3
3. 보안서버 관련 규정
보안서버 구축 관련 규정은 아래와 같으며, 전체 법조항이 필요하신 경우는
정보통신부 홈페이지(www.mic.go.kr)나 법제처 홈페이지(www.moleg.go.kr)를
참조하시기 바랍니다.
1. 정보통신망 이용촉진 및 정보보호 등에 관한 법률
▶ 제28조(개인정보의 보호조치) 정보통신서비스제공자등은 이용자의 개인정보를 취
급함에 있어서 개인정보가 분실·도난·누출·변조 또는 훼손되지 아니하도록 정보
통신부령이 정하는 바에 따라 안전성 확보에 필요한 기술적·관리적 조치를 하여야
한다. <개정 2004.1.29>
▶ 제67조 (과태료) ②다음 각 호의 어느 하나에 해당하는 자는 1천만원 이하의 과태료
에 처한다. <개정 2004.1.29>
8의2. 제28조의 규정을 위반하여 기술적·관리적 조치를 하지 아니한 자
2. 정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행규칙
▶ 제3조의2(개인정보의 보호조치) ①법 제28조의 규정에 의한 개인정보의 안전
성 확보에 필요한 기술적·관리적 조치는 다음 각호와 같다.(중간 생략)
4. 개인정보를 안전하게 저장·전송할 수 있는 암호화기술 등을 이용한 보안조치
(이하생략)
3. 개인정보의 기술적⋅관리적 보호조치 기준
▶ 제5조(개인정보의 암호화) ②정보통신서비스제공자등은 정보통신망을 통해 이용자
의 개인정보 및 인증정보를 송·수신할 때에는 보안서버 구축 등의 조치를 통해
이를 암호화해야 한다. 보안서버는 다음 각호의 어느 하나의 기능을 갖추어야 한
다. <개정 2007.1.29>
1. 웹서버에 SSL(Secure Socket Layer) 인증서를 설치하여 개인정보를 암호화하
여 송․수신하는 기능
2. 웹서버에 암호화 응용프로그램을 설치하여 개인정보를 암호화하여 송․수신하
는 기능
③정보통신서비스제공자등은 이용자의 개인정보를 PC에 저장할 때에는 이를 암
호화해야 한다.
4 보안서버 구축 가이드
Ⅱ. 어떻게 시작하지?
1. 보안서버의 종류
보안서버는 구축 방식에 따라 크게 「SSL 방식」과 「응용프로그램 방식」
2가지로 구분할 수 있습니다. 보안서버를 구별하는 방법은 아래와
같습니다.
가. SSL 방식
「SSL 인증서」를 이용한 보안서버는 사용자 컴퓨터에 별도 보안 프로그램
설치가 필요없으며, 웹 서버에 설치된 「SSL 인증서」를 통해 개인정보를
암호화하여 전송합니다. 보안서버 구축에 소요되는 비용이 상대적으로
저렴하지만 주기적으로 인증서 갱신을 위한 비용이 소요됩니다.
로그인 페이지 등 보안이 필요한 웹페이지에 접속한 상태에서
브라우저 하단 상태 표시줄에 자물쇠 모양의 마크로 확인할 수 있으며,
웹사이트의 구성 방법에 따라 자물쇠 모양의 마크가 보이지 않을 수
있습니다.
보안서버 구축 가이드 5
<그림 2-1> SSL 방식의 보안서버 실행 확인
나. 응용프로그램 방식
암호화 응용 프로그램을 이용한 보안서버는 웹 서버에 접속하면 사용자
컴퓨터에 자동으로 보안 프로그램이 설치되고 이를 통해 개인 정보를
암호화하여 전송합니다.
웹사이트 접속 시 초기화면이나 로그인 후 윈도우 화면 오른쪽 하단
작업표시줄 알림영역에 다음 그림과 같은 암호화 프로그램 실행여부를
확인할 수 있으며, 응용프로그램에 따라 모양은 다르게 나타날 수
있습니다.
<그림 2-2> 응용프로그램 방식의 보안서버 실행 확인
6 보안서버 구축 가이드
2. 보안서버 구축 전문업체
보안서버 구축 방법과 절차에 관한 보다 구체적인 내용은 다음의
「보안서버전문협의회」회원사 중 선택하여 문의하거나 평소 알고 있는
보안서버 구축 전문업체를 통하여 자세한 설명을 받을 수 있습니다.
회사명 홈페이지 연락처
SSL 방식 솔루션 공급 업체
한국전자인증(주) www.crosscert.com 1588-1314
한국정보인증(주) www.kica.net (02) 360-3065
이모션 www.trust1.co.kr (02) 542-1987
(주)한국무역정보통신 www.tradesign.co.kr (02) 6000-2162
(주) 한비로 comodossl.co.kr 1544-4755
(주)닷네임코리아 www.anycert.co.kr 080-456-7770
나인포유 www.certkorea.co.kr (02) 3444-2750
(주)아이네임즈 cert.inames.co.kr (02) 559-1006
응용 프로그램 방식 솔루션 공급 업체
한국전자인증(주) www.crosscert.com 1588-1314
이니텍(주) www.initech.com (02) 2140-3553
한국정보인증(주) www.signgate.com (02) 360-3065
(주)케이사인 www.ksign.com (02) 564-0182
드림시큐리티 www.dreamsecurity.com (02) 2233-5533
시큐리티 테크놀로지(STI) www.stitec.com (02) 558-7391
펜타시큐리티시스템(주) www.pentasecurity.com (02) 780-7728
소프트포럼 www.softforum.co.kr (02) 526-8423
(주)코스콤 www.signkorea.co.kr (02) 767-7224
엠큐릭스(주) www.mcurix.com (02) 2253-8882
유넷시스템(주) www.unetsystem.co.kr (02) 390-8000
보안서버 구축 가이드 7
☑ 서버의 운영은 어떻게 하고 계신가요?
↓ ↓
단독 서버 운영 웹호스팅서비스 이용

☑ 보안서버 종류와 전문업체를 결정하셨나요? ↓
↓ ↓
Ⅲ.
SSL 방식
보안서버 구축하기
Ⅳ.
응용프로그램 방식
보안서버 구축하기
Ⅴ.
웹호스팅업체의
보안서버 구축하기
웹 서버 기종 확인 구축 절차 확인
구축 절차 및
구축 전 확인사항 체크
↓ ↓ ↓ ↓
IIS 서버에서의
설치 과정
아파치 서버에서의
설치 과정
보안서버 설치 및
구축 완료
웹호스팅서비스
제공업체와의 협의 및
보안서버 설치
↓ ↓ ↓ ↓
오류시 대처방법 오류시 대처방법 보안서버 구축 확인
↓ ↓
Ⅵ. 웹페이지 수정 및 적용 확인하기
<그림 2-3> 보안서버 구축 절차 흐름도
3. 보안서버 구축 절차 흐름도
지금까지 보안서버의 개념과 종류 등 보안서버를 구축하기 전에
필요한 사항들을 간단하게나마 알아보았습니다. 이제부터는 본격적으로
보안서버 구축 방법에 대하여 알아보겠습니다. 현재 기업의 상황을
확인하시고 아래 절차 흐름도를 참고하여 자신에게 필요한 내용을 찾아
각 장으로 이동하시면 됩니다.
8 보안서버 구축 가이드
Ⅲ. SSL 방식 보안서버 구축하기
1. 소개 및 보안서버 구축 절차
가. 개요
SSL은 Secure Sockets Layer의 머리글이며, 1994년 Netscape에 의해
전세계적인 표준 보안 기술이 개발되었습니다.
SSL 방식은 웹 브라우저와 서버간의 통신에서 정보를 암호화함으로써
도중에 해킹을 통해 정보가 유출되더라도 정보의 내용을 보호할 수 있는
기능을 갖춘 보안 솔루션으로 전세계적으로 수 백 만개의 웹사이트에서
사용하고 있습니다.
아래는 SSL 보안에 대해 그림으로 간단하게 설명해 놓은 것입니다.
<그림 3-1> SSL 방식의 보안서버 개념도
인증기관(Certification Authorities)에서 제공하는 SSL 인증서를 발급받아
웹 서버에 설치하게 되면 웹사이트 이용자들의 거래, ID/패스워드,
개인정보 등을 암호화하여 송수신할 수 있습니다.
보안서버 구축 가이드 9
나. 보안서버 구축 절차
SSL 방식의 보안서버 구축 절차는 다음과 같습니다.
서버의 종류 확인
IIS 서버 / 아파치 서버 등
↓ ↓
2.1
IIS 서버에서의 설치 과정
2.2
아파치 서버에서의 설치 과정
...
↓ ↓
개인키 생성 및 CSR 생성 개인키 생성 및 CSR 생성
↓ ↓
SSL 인증서 발급
인증기관에 CSR 제출 및 인증서 발급 신청

신청자 상세정보 입력 및 결재
↓ ↓
IIS 서버에 설치 및 SSL 설정 아파치 서버에 설치 및 SSL 설정
↓ ↓
3. 오류 발생시 대처방법
<그림 3-2> SSL 방식 보안서버 구축 절차
① SSL 방식의 보안서버를 사용하기 위해서는 운영하고 있는 웹 서버에
보안서버 인증서가 설치되어야 합니다. 보안서버 인증서는 운영 중인
웹 서버에서 '인증서 만들기'를 이용하여 생성합니다.
※ 발급이 완료된 인증서는 재발급 또는 변경이 불가능하기 때문에 새로
발급받으셔야 하며, 새로 발급받을 시 비용이 발생할 수 있으니 CSR
생성시 절대 주의 바랍니다.
② 먼저 운영하는 웹 서버에서 개인키를 만든 후, CSR 파일을 생성하여
인증기관에 보안서버 인증서 발급을 신청합니다.
CSR(Certificate Signing Request)이란 인증서 요청파일의 약어로서
운영하는 URL 및 운영하는 회사의 정보 등이 입력됩니다.
10 보안서버 구축 가이드
③ 인증기관에 CSR을 이용하여 인증서를 신청할 때 회사의 담당자
정보 등을 입력합니다. 인증서 발급 심사 후에 신청 시 입력한
담당자의 E-mail 주소로 인증서가 발급됩니다.
④ 발급받은 인증서를 운영 중인 웹 서버에 설치하게 되면 SSL 방식의
보안서버 설정을 완료하게 됩니다.
서버호스팅 서비스를 받고 있는 고객의 경우에는 서버에 대한 관리자
권한이 고객에게 있기 때문에 고객이 직접 CSR 생성 및 인증서 발행 후에
설치를 진행해야 하며, 호스팅 서비스 제공업체에게 보안서버 구축
대행을 요청하게 되면 설치대행비가 부과될 수 있습니다.
SSL 방식의 보안서버 구축은 서버의 운영체제에 따라 적용절차가
모두 다르므로, 가장 많이 사용되는 IIS와 아파치 서버를 중심으로
설명하겠습니다. IIS 서버에 설치하는 경우는 2.1의 내용을 참고하시고,
아파치 서버에 설치하는 경우는 2.2의 내용을 참고하시기 바랍니다.
향후 다른 종류의 서버에 SSL 방식의 보안서버를 설치하는 방법을
추가해 나갈 예정입니다.
2. 설치 과정
2.1 IIS 서버에서의 설치 과정
가. 개인키 생성 및 CSR 생성 방법
① 웹사이트 속성 선택
시작→프로그램→관리도구→인터넷 서비스 관리자→웹사이트→속성
보안서버 구축 가이드 11
② 등록정보 화면에서 디렉토리 보안을 클릭한 후 서버 인증서를
클릭합니다.
③ 웹 서버 인증서 마법사를 시작합니다. ‘새 인증서를 만듭니다’를
선택합니다.
12 보안서버 구축 가이드
④ ‘요청을 준비하지만 나중에 보냅니다’를 선택합니다.
⑤ 인증서를 만들 이름을 입력하시기 바랍니다.
이름은 인증서의 별칭이므로 쉬운 것으로 입력하여 주시기 바랍니다.
인증서 키의 길이는 1,024가 표준입니다. 비트 길이가 너무 크면
서버에서 인지하지 못할 경우도 있습니다.
보안서버 구축 가이드 13
⑥ 조직 및 조직 구성 단위를 입력합니다.
조직은 회사의 영문 전체 이름을 입력하고, 조직 구성단위는 영문
부서명을 입력합니다.(모든 내용은 영문으로 입력합니다)
⑦ 인증받을 도메인 이름을 입력하시기 바랍니다.
14 보안서버 구축 가이드
⑧ 지역 정보를 입력합니다.(모든 내용은 영문으로 입력합니다.)
⑨ 인증서 요청파일(CSR)을 저장합니다.
보안서버 구축 가이드 15
⑩ 신청한 내용을 다시 한 번 확인합니다.
⑪ 인증서 신청을 완료합니다.
⑫ CSR 내용을 인증기관에게 메일로 송부하시던지 인증서 신청화면에
붙여 넣으신 후 인증서 신청을 진행하시면 됩니다.
자, 이제 인증기관의 발급 절차에 따라서 인증서가 발급됩니다.
16 보안서버 구축 가이드
나. SSL 설정
① 웹사이트 속성 선택
시작→프로그램→관리도구→인터넷 서비스 관리자→웹사이트→속성
② 등록정보 화면에서 디렉토리 보안을 클릭한 후 서버 인증서를
클릭합니다.
보안서버 구축 가이드 17
③ 보류중인 요청을 처리합니다.
④ 보류 중인 요청 처리-메일을 통하여 받은 인증서(-----begin 부터
end-----까지)를 저장한 파일을 선택합니다. 인증서 파일을 선택한 후
다음 버튼을 누릅니다.
18 보안서버 구축 가이드
⑤ 인증서 요약 - 현재 설치하시고자 하는 인증서의 내용이 보여집니다.
만약에 신청하신 내용과 일치하지 않으면, 경고 메시지가 뜨며,
인증서가 설치되지 않습니다. 그럴 경우에는 현재의 요청을 삭제하신 후,
새로운 인증서를 신청하셔야 합니다.
⑥ 인증서 설치 후의 설정 - 기본 웹 사이트의 등록정보에서 웹사이트 탭을
선택합니다. 웹 사이트 확인 섹션에서 고급 버튼을 클릭해서 SSL 포트에
443을 설정해줍니다.(기본적으로 443을 사용하지만, 사이트 운영자가
1~65535 범위내에서 임의로 포트번호를 설정할 수 있습니다)
보안서버 구축 가이드 19
⑦ 인증서 설치 확인 - 인증서가 정확히 설치되었는지 인증서가 설치된
홈페이지를 통해 확인할 수 있습니다.
https://인증서 신청 URL에 접속해서 하단에 노란자물쇠 버튼이
뜨는지 확인합니다. 만일 443이 아닌 다른 포트로 SSL 포트를
적용하였을 경우에는 주소창 뒤에 포트번호를 지정해야 확인할 수
있습니다.(예 : https://www.kisa.or.kr:442)
⑧ 이제 SSL 인증서의 설치가 완료되었습니다. Ⅵ장으로 이동하셔서
실제 웹페이지를 어떻게 수정해야 하는지 알아보겠습니다.
2.2 아파치 서버에서의 설치 과정
가. 아파치 서버에 Openssl과 MOD_SSL의 설치 방법
아파치 서버에서 SSL 통신을 가능하게 하기 위해서는 OpenSSL과
mod_ssl이 필요합니다.
우선, 현재 서비스 중인 Apache 서버에 Mod_SSL이 설치되어 있는지를
httpd -l 옵션을 사용하여 Mod_SSL.c 또는 Mod_SSL.so가 있는지 확인하시기
20 보안서버 구축 가이드
바랍니다. 만일 설치되어 있다면 ‘나. 개인키 생성 및 CSR 생성 방법’ 과정으로
이동하시기 바랍니다.
<그림 3-3> Mod-SSL 설치 확인 예
OpenSSL은 최신버전으로 설치하는 것을 권장하지만 서버의 환경에
따라서 적합한 버전으로 설치하는 것이 좋습니다. 서버 환경에 맞는
OpenSSL 버전은 www.openssl.org에서 확인할 수 있습니다.
또한 Mod_SSL은 반드시 Apache 버전에 맞는 것을 설치하셔야 하며
www.modssl.org에서 Apache 버전을 확인 한 후 그에 맞는 mod_SSL을
다운받아 설치하시기 바랍니다.
① OpenSSL의 설치(www.openssl.org)
압축풀기
$ gzip -cd openssl-0.9.6.tar.gz | tar xvf -
$ ./config$ make$ make installconfig
☞ prefix를 주지 않았을 때에는 /usr/local/ssl 디렉토리에 설
치가 됩니다.
다른 디렉토리에 설치를 하고자 한다면 다음과 같이 합니다.
$ ./config --prefix=/usr/local --openssldir=/usr/local/openssl
☞ OpenSSL의 실행파일은 /usr/local/ssl/bin에 설치되고
인증서비스를 위한 파일들은/usr/local/openssl 아래의
디렉토리에 생성됩니다.
보안서버 구축 가이드 21
② mod_ssl의 설치 (www.modssl.org)
압출풀기
$ gzip -cd apache_1.3.19.tar.gz | tar xvf
$ gzip -cd mod_ssl-2.8.1-1.3.19.tar.gz | tar xvf
파일의 다운로드와 압축풀기가 끝나면 mod-ssl 설정을 합니다.
mod-ssl 설정
$ cd mod_ssl-2.8.1-1.3.19
$ ./configure \
--with-apache=../apache_1.3.19 \
--with-ssl=../openssl-0.9.6 \
--prefix=/usr/local/apache
③ Apache Server 설치(www.apache.org )
$ cd ../apache_1.3.x
$ SSL_BASE=../openssl-0.9.6 \
./configure \
--prefix=/usr/local/apache \
--enable-module=ssl \
$ make
$ make certificate
$ make install
나. 개인키 생성 및 CSR 생성 방법
① 랜덤 넘버 생성
$ openssl md5 * > rand.dat
② 키 쌍 생성
$ openssl genrsa -rand rand.dat -des3 -out 1024 > key.pem
☞ 개인키 비밀번호를 입력하며 반드시 기억해야 합니다. (암호를
분실할 경우 SSL 사용을 위한 apache를 구동할 수 없습니다)
22 보안서버 구축 가이드
③ 생성된 키 쌍을 이용하여 CSR생성
$ openssl req -newkey key.pem > csr.pem
☞ 여기서 key.pem은 단계 ②에서 생성한 키 이름이며 csr.pem은
출력 CSR 파일의 이름입니다.
다음 정보를 입력하라는 메시지가 나타납니다. (모든 내용은 영문으로
작성해야 하며, 아래는 입력 예입니다)
Country(국가 코드) KR
State/province (시/도의 전체 이름) Seoul
Locality(시,구,군 등의 이름) Songpa-gu
Organization(회사 이름) test (이니셜 또는 약자 금지. Full name입력)
Organization Unit(부서명) : team
Common Name (host name + domain name) : cert.kisa.or.kr
"추가 속성"을 입력하라는 메시지가 나타나면 그냥 넘어가셔도 무방합니다.
④ CSR 제출
생성된 CSR(예:csr.pem)의 내용은 다음과 같습니다.
-----BEGIN CERTIFICATE REQUEST-----
MIIBETCBvAIBADBXMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEh
MB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRAwDgYJKoZIhvcNAQkB
FgFgMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL6nPTy3avNgbubx+ESmD4LV1LQG
fcSh8nehEOIxGwmCPlrhTP87PaA0XvGpvRQUjCGStrlQsd8lcYVVkOaytNUCAwEA
AaAAMA0GCSqGSIb3DQEBBAUAA0EAXcMsa8eXgbG2ZhVyFkRVrI4vT8haN39/QJc9
BrRh2nOTKgfMcT9h+1Xx0wNRQ9/SIGV1y3+3abNiJmJBWnJ8Bg==
-----END CERTIFICATE REQUEST-----
CSR 내용을 인증기관에게 메일로 송부하시던지 인증서 신청화면에
붙여넣으신 후 인증서 신청을 진행하시면 됩니다.
인증기관의 발급 절차에 따라서 인증서가 발급됩니다.
다. 인증서 설치 방법
보안서버 구축 가이드 23
① 메일로 받은 인증서를 복사하여 파일로 저장합니다.(예: Cert.pem)
-----BEGIN CERTIFICATE-----
MIIBETCBvAIBADBXMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0Z
TEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRAwDgYJKoZIhvcNA
QkBFgFgMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL6nPTy3avNgbubx+ESmD4LV
1LQGfcSh8nehEOIxGwmCPlrhTP87PaA0XvGpvRQUjCGStrlQsd8lcYVVkOaytNUCAwE
AAaAAMA0GCSqGSIb3DQEBBAUAA0EAXcMsa8eXgbG2ZhVyFkRVrI4vT8haN39/QJc9
BrRh2nOTKgfMcT9h+1Xx0wNRQ9/SIGV1y3+3abNiJmJBWnJ8Bg==
-----END CERTIFICATE-----
② 아파치 서버에 적절한 위치에 저장합니다.
③ 환경설정 파일(httpd.conf 또는 ssl.conf)을 수정합니다.
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot /Apache/htdocs
ServerName @@ServerName@@:443
ServerAdmin cs@crosscert.com
ErrorLog logs/error_log
TransferLog logs/access_log
SSLCertificateFile /Apache/ssl/cert.pem → 인증서 파일 경로
SSLCertificateKeyFile /Apache/ssl/key.pem → 개인키 파일 경로
④ 아파치를 재구동합니다.
./apachectl startssl
아파치 서버에서 SSL을 사용하기 위한 시작 명령어인 startssl을
실행하면 개인키의 비밀번호를 묻는데, 이 비밀번호는 이전의
설치과정 중 ‘나. 개인키 생성 및 CSR 생성 방법’ 중 ② 키 쌍 생성시
입력한 개인키 비밀번호를 입력하시면 됩니다.
이제 SSL 인증서의 설치가 완료되었습니다. Ⅵ장으로 이동하셔서
실제 웹페이지를 어떻게 수정해야 하는지 알아보겠습니다.
24 보안서버 구축 가이드
인증서는 저마다 고유한 유효기간을 가지고 있는데, 이 기간이
지난 인증서를 계속 설치해 두는 경우에 나오는 경고창입니다.
3. 오류 발생시 대처방법
① 인증서를 발급받은 사이트 주소와 실제로 접속한 사이트 주소가 다른 경우
예를 들어 www.kisa.or.kr로 인증서를 발급받아 설치한 후 실제 적용은
login.kisa.or.kr로 걸어두는 경우와 같이 인증서를 발급받은
주소와 실제로 접속한 주소가 다른 경우에 위와 같은 경고창이
나오게 됩니다.
② 인증서가 유효하지 않은 경우
보안서버 구축 가이드 25
이 경우는 웹 서버 인증서를 발급한 인증기관을 웹 브라우저가
인식하지 못하는 경우로써, 브라우저에는 기본적으로 신뢰할 수 있는
인증기관 리스트가 내장되어 있는데 그 리스트에 없는,
즉 신뢰할 수 없는 인증기관에서 발급된 인증서를 설치한 경우에
발생하는 경고창입니다. 실제로는, 웹 서버에서 자체적으로 만든
인증서를 설치한 경우에 가장 많이 생깁니다.
말 그대로 보안된 항목 https와 보안되지 않은 항목 http를 모두
포함하고 있어 나타나는 보안경고창입니다. https://를 이용해서
암호화 통신을 하고자 하는 페이지의 소스에 http://를 이용하여
그러나, 보통의 경우 인증서가 설치된 사이트에 접속하는 PC의
날짜가 잘못되어 있어서 생기는 경우가 가장 많습니다.
③ 브라우저가 웹 서버 인증서를 신뢰할 수 없는 경우
④ 보안된 항목 https와 보안되지 않은 항목 http를 모두 포함하는 경우
26 보안서버 구축 가이드
호출하는 이미지 등이 존재할 때 보안경고창이 나타나는 것입니다.
이 경우 ‘아니오’ 버튼을 눌러 표시되지 않는 http 항목의 소스를
절대경로를 써서 https로 호출하시면 됩니다.
한 페이지 안에 http://와 https://의 두 프로토콜이 존재하기 때문입니다.
예) HTTP://[로그인 폼 입력 페이지]
∇HTTPS://[로그인 서버 처리]
HTTP://[로그인 완료 페이지]
예를 들어, http://www.kisa.or.kr에서 https://www.kisa.or.kr
/login.jsp로 접속할 때 /login.jsp안에 http://www.kisa.or.kr로
호출하는 직접적인 소스가 있기 때문입니다.
해결방법 : http://리턴URL을 Script를 통해서 Return URL을
설정해 주시면 됩니다.
⑤ 한 페이지에 http://와 https://의 두 프로토콜이 존재하는 경우
⑥ 운영중인 웹 서버를 같은 기종으로 변경하려 합니다.
개인키와 인증서를 백업하신 후 재설치하여 사용이 가능합니다.
서버 이전 또는 변경 전 설치 업체에게 반드시 사전 문의 후
작업을 진행하시기 바랍니다.
보안서버 구축 가이드 27
이 에러는 아래와 같은 이유로 발생합니다.
ⅰ. https 디렉토리에 파일이 존재하지 않을 경우
ⅱ. 서버의 방화벽이나 end-user의 방화벽에서 443 포트가
차단되었을 경우
ⅲ. https 서버가 다운되었을 경우
ⅳ. SSL Certificate 파일이 정상적이지 않을 경우
ⅴ. 웹 브라우저에서 ssl 3.0으로 셋팅이 되어 있지 않을 경우
인증서가 정상적으로 설치되었는지를 확인하시고 서버에서 https를
위한 포트를 활성화 되었는지 확인하시기 바랍니다. 또한 방화벽과
L4 스위치 등 보안장비가 있다면 https를 위한 해당 포트를
모두 허용하여 주시기 바랍니다. IIS 서버의 경우 ‘Netstat –na |
findstr 포트번호’, 아파치 서버의 경우 ‘Netstat –na | grep
포트번호' 명령어를 이용하여 https를 위한 포트가 활성화되어
있는지 확인할 수 있습니다. 위의 모든 내용을 확인한 후에도
정상적으로 동작하지 않을 경우 해당 업체에게 문의하시기 바랍니다.
CSR을 생성하실 경우 해당 정보는 모두 영문으로 작성하여
주셔야 하며 특수문자는 사용하시면 안됩니다. 또한 입력을
요청하는 모든 내용을 입력하시고 다시 한 번 작업을 하시기 바랍니다.
위의 모든 내용을 확인 한 후에도 정상적으로 동작하지 않을 경우
해당 업체에게 문의하시기 바랍니다.
⑦ 운영중인 웹 서버 종류를 다른 기종으로 변경하려 합니다.
개인키와 인증서를 백업하신 후 재설치하여 사용이 가능합니다.
다만 일부 웹 서버 종류는 인증서 및 개인키의 호환이 안되는 경우가
있으니 서버 이전 또는 변경 전 설치 업체에게 반드시 사전 문의 후
작업을 진행하시기 바랍니다.
⑧ https로 접속하면 페이지를 표시 할 수 없다는 페이지가 보입니다.
⑨ CSR 생성이 정상적으로 되지 않습니다.
28 보안서버 구축 가이드
⑩ 아직 도메인이 없는데 IP를 대상으로 인증서 발급이 가능합니까?
인증서는 고유의 식별자를 대상으로 발급됩니다. 즉 개인은
주민등록번호를 기준으로 발급되며 법인은 사업자등록번호로
발급되고, 서버는 도메인을 기준으로 발급되기 때문에 IP 또는
서버이름으로는 발급되지 않습니다. 따라서 도메인을 등록하시거나
서버의 호스트 이름으로 인증서를 신청하셔야 합니다.
⑪ 서브(Secondary) 도메인에 대해서도 보안서버를 적용하고 싶습니다.
어떤 방법이 있을까요?
일반적인 보안서버 인증서는 Host*Domain 단위로 발급되고
적용되게 됩니다. 다른 Host*Domain에 대해서도 보안을 적용하고자
한다면 전문업체와 협의하여 적합한 제품을 구축하셔야
합니다.
⑫ SSL 인증서를 발급 받았는데 도메인의 IP를 변경해도 괜찮은가요?
인증서는 특정 IP로 제한하여 발급되지 않으며, www.test.co.kr처럼
도메인 이름으로 발급이 됩니다. 따라서 IP를 변경해도 무관합니다.
⑬ 인증서 기간이 만료되어 새로 발급받으려고 하는데 CSR 파일을
전에 사용하던 것으로 가능한가요?
보통 웹 서버에서 예전에 사용하던 CSR 파일의 사용이 가능합니다.
그러나 보안상의 이유로 추천하지 않습니다. 인증서를 갱신하실 때마다
새로이 CSR 파일을 생성하시는 것이 좋습니다. 또한 웹 서버
종류마다 반드시 CSR을 생성해야 하는 서버가 있으니 새로
발급받으시기 전에 전문업체에게 문의하시기 바랍니다.
보안서버 구축 가이드 29
⑭ 보안서버가 구축되었는지 확인을 어떻게 하나요?
일반적으로 보안서버가 구축되어 있으면 https://URL로 확인이
가능합니다. 하지만 https://URL을 통해서도 확인이 되지 않는
경우가 있으니 전문업체에게 확인을 하시면 보다 정확하게 진단을
받으실 수 있습니다.
⑮ 우리가 사용하고 있는 서버에 보안서버 설치가 가능하나요?
기본적으로 모든 웹 서버에는 인증서 방식의 보안서버가 설치
가능하지만 서버 환경에 따라서 별도의 작업이 필요할 수도 있습니다.
보안서버 신청 및 설치 전에 전문업체에게 문의하신 후 작업을
진행하시기 바랍니다.
반드시 확인이 필요한 서버는 Apache, Tomcat 등이 있습니다.
출처 : http://jinjin707.tistory.com/117
Posted by 1010
98..Etc/Etc...2008. 11. 28. 17:23
반응형

Not Clickjacking (Almost Certainly)

[UPDATE: See updated post]

A couple months back, I got to thinking about how to weasel around the built-in pop up blockers for Mozilla Firefox and Microsoft Internet Explorer. I can't remember now why I started down this path, but it consumed my afternoon, and in the end I had about a dozen variations on three or so core strategies.

Since I have no fake watches or mortgages to sell, I thusly shelved it all once I was done. We couldn't think of a reasonable application for these techniques here in BreakingPoint.

Well, maybe something was in the air, because it looks like RSnake and Jeremiah Grossman were working on something similar at around the same time. Only, they were going to present their findings at OWASP this week.

Unfortunately, we can't know what the extent of their trickery is, since some vendors asked them to keep it quiet -- but it's almost certainly more devious than simply skipping around the pop up blockers.

So, in the interest of quelling any speculation on the nature of "ClickJacking," here's two or three mildly interesting examples of what it almost certainly isn't. Note, the below example links are all in an iframe from planb-security.net. So, if you have a tabbed browser, you may notice an illusion the iframe's parent window (this blog post) being replaced by the fake pop up link (in this case, example.com).



If you're in the business of speculating on what other people's findings are, then you can safely check these techniques off your list. Since they all require Javascript to work their anti-anti-pop up magic, NoScript is quite effective in preventing these attacks. Based simply on this observation, and discounting for the moment the inherent lameness of merely subverting mouse clicks, it's virtually certain Jeremiah and RSnake's stuff is much, much more interesting / dangerous.

Posted by Tod Beardsley (2008/09/25 16:13:37.133 GMT-5)
5 comments | Tags:

Hmm

작성자 Lawrence D'Oliveiro 작성 시각 2008-09-26 00:21
Your second example doesn't seem to work for me. I think you need a "return false" after the form-submit statement.

Also they've said that the exploit has to do with dynamic HTML. That means it would have to involve dynamically adding/modifying things in the DOM for the Web page.

Just an observation

작성자 Internet Junkie 작성 시각 2008-09-26 00:21
i used opera and instead of directly clickinn the on links , right clicked and selected open in a new tab.
Your demo exploit failed to work.
Please give it a try.

Regards.

Not quite so, Opera suffers too

작성자 Rhian 작성 시각 2008-10-06 02:22
Right-clicking can get you anywhere...

By default Opera is affected like FF and IE. So it's not the demo at fault, you just circumvent the default behaviour.

If you click here.... means you left-click on it, not clicking somewhere else or right-clicking the link.

I'm not bashing Opera, I'm using it myself too, but just the really stupid remark.

It is as if someone (or a GPS) says go right at the end of the street then you'll reach such-and-such. Internet Junkie claiming: If I go left I don't get there. The GPS is faulty/the preson giving directions is wrong.
It's as simple and as stupid as that.

not very new

작성자 Franky Van Liedekerke 작성 시각 2008-09-26 03:26
Not to be a critic here, but the onmouseup, onmousedown and other onmouse events are all old thingies. These examples do nothing new here. Fun would be also onmouseover and onmouseout, but again: nothing new. Disable javascript and these so-called issues don't work anymore. But people might object to javascript-disabling since ajax-sites love using this as well.

Franky

speculating clickjacking

작성자 pokemon123 작성 시각 2008-10-05 03:50


Here is my speculation on what clickjacking is.
There are two parts. The first part: Hovering an invisible button so users can inadvertently click it without realizing it. The second part, executing a malicious script. The second part appears easy. It is probably just like onMousedown jacking or something like that.
The first part: hovering an invisible button. Where have I seen this before. Yes, the patched Adobe PDF. In 2006-2007, Di Paolo and Fedon disclosed the universal XSS attack. In particular, easy demos were widely circulated that injects a javascript, any javascript, to a PDF file. The attack was so powerful, Adobe patched it within a month. After the Adobe patch, the use experience of Acorbat reader changed as follows: When clicking a link inside the Acrobat Reader while reading a PDF document, a prompt box pops us to ask the user whether that link is to be fetched or not. That link, inside Adobe Acrobat Reader, is invisible or at least semi-invisible.
So here is my speculation on what clickjacking is. I speculate the RSnake and Grossman figured out how to transplant the invisible button in Acrobat to ordinary Javascript, and used it to create clickjacking. It is probably a semi-invisible button, or fully invisible button, much like the links in Acrobat. Also, RSnake and Grossman probably figured out how to suppress the pop-up warning in Acrobat. If they know how to transplant it, they probably also know how to suppress the pop-up warning.
Experts out there are better judges of whether my speculation is way off the mark. Those with expertise on the UXSS attack and the corresponding Adobe patch can follow the tip better than I ever can.
Have you noticed Adobe is closely working on patching clickjacking, while browsers are not. This is despite the claim by RSnake and Grossman that browsers should be the main party to patch it. I wonder why?

Posted by 1010
98..Etc/Etc...2008. 11. 28. 17:16
반응형

전혀 쓸모 없을 것 같은 팁이지만 가끔 쓰는 경우가 있어서 정리해 둡니다.

실행 -> cmd -> diskpart를 칩니다.

1. LIST VOLUME[엔터]

이렇게 하면 현재 컴퓨터에 존재하는 선택할 수 있는 VOLUME을 확인할 수 있습니다.

2. SELECT VOLUME 번호[엔터]

특정 볼륨을 선택합니다.

3. ASSIGN LETTER 원하는 드라이브명[엔터]

이제 드라이브 명이 변경됩니다.

예)

LIST VOLUME[엔터]

SELECT VOLUME 1[엔터]

ASSIGN LETTER D[엔터]

결과)

1번 볼륨이 D:로 변경됨


출처 : http://okjsp.pe.kr/seq/126791

Posted by 1010
98..Etc/C2008. 11. 28. 00:46
반응형
http://www.microsoft.com/korea/seminar/
Posted by 1010
98..Etc/Server2008. 11. 27. 13:17
반응형

Apache 웹서버에 SSL를 적용하기 위해 아래 두 항목이 웹서버에 설치되어 있어야 합니다.

- Openssl 암호화 라이브러리
- Mod_ssl 모듈

위 두 항목이 웹서버에 설치되어 있다면 개인키를 생성하고 생성된 개인키를 바탕으로 CSR 파일을 생성합니다.
생성된 CSR 파일을 한비로에 접수하여 정식 인증서를 발급받습니다.
발급된 인증서를 웹서버에 설치하게 되면 SSL 설정을 완료하게 됩니다.

위 일련의 진행사항은 아래와 같은 절차를 따르게 됩니다.

1. openssl 라이브러리 설치상태 확인
2. mod_ssl 모듈 설치상태 확인
3. 개인키 생성
4. CSR 생성
5. 한비로에 접수
6. 정식 인증서 발급
7. SSL 설정
사용자 삽입 이미지


1. Openssl 라이브러리 설치상태 확인

먼저 SSL를 설치하고자 하는 웹서버에 openssl 라이브러리 설치상태를 find 명령어를 활용하여 아래와 같이 확인합니다.
사용자 삽입 이미지
위와 같은 값을 보인다면 openssl 라이브러리 모듈은 rpm으로 설치된것입니다.
만약에 경로가 /usr/local 아래 있다면 모듈은 소스로 설치된 것입니다.
rpm으로 설치된 것이라면 rpm -qa 명령어를 사용하여 openssl-devel 설치여부도 함께 점검합니다. 버전에 따라 라이브러리 버전이 아래보이는 값과 차이가 있을수 있습니다.

사용자 삽입 이미지
Openssl 은 암호화 처리를 위한 독립 모듈로 최신버젼으로 설치하는 것을 권장합니다.


2. Mod-ssl Openssl 라이브러리 설치상태 확인

Openssl 과 마찬가지로 웹서버의 mod_ssl 설치여부를 점검합니다.
Apache 웹서버는 두가지 방식으로 모듈설치를 지원하고 있습니다. 정적과 동적인 방식으로 정적으로 설치된 경우는 아파치의 재설치까지 요구되며 동적인 경우는 손쉽게 모듈 설치가 가능합니다.
Apache 가 /usr/local 아래 설치된 것을 기준으로 아래와 같은 방식으로 확인합니다.

정적으로 설치된 mod_ssl 모듈확인
사용자 삽입 이미지

동적으로 설치된 mod_ssl 모듈확인
사용자 삽입 이미지

웹서버에 설치된 모듈중 mod_so.c 를 먼저 확인후 동적으로 설치된 모듈중 mod_ssl.so 를 확인합니다.
동적으로 설치된 경우 apache 설치 디렉토리의 module 이나 libexec 디렉토리내에 mod_ssl.so 의 존재여부를 확인합니다.


3. 개인키 생성

Openssl 명령어를 이용하여 웹서버의 RSA키( 1024비트 암호화 )를 생성합니다. ( sslhanbiro.key 는 임의로 지정된 키값입니다. 원하는 이름으로 키를 생성합니다. )
패스워드를 지정하게 됩니다. 이때 입력된 패스워드는 차후 여러차례 사용되므로 본인만이 알 수 있는 패스워드로 지정해 주시는 것이 좋습니다.
사용자 삽입 이미지
이때 생성되는 개인키는 반드시 백업을 받아놓고 사용하는 것이 좋습니다.
생성된 키는 아래와 같이 확인이 가능합니다. 패스워드를 확인 하는데 이때는 키생성시 입력한 패스워드를 입력합니다.
개인키 생성까지 완료되면 이제 CSR 생성을 하게됩니다.
사용자 삽입 이미지


4. 인증요청서( CSR ) 생성

*발급이 완료된 인증서는 재발급 또는 변경이 불가하므로 CSR 생성시 절대 주의 바랍니다.

☞ CSR ( Certificate Signing Request ) 이란?


SSL 서버를 운영하는 회사의 정보를 암호화하여 인증기관으로 보내 인증서를 발급받게 하는 일종의 신청서입니다.
CSR은 ASCII 텍스트 화일로 생성됩니다.
CSR을 생성할 때 서버의 식별명을 입력하게 됩니다. 식별명은 각 서버를 공유하게 나타내는 이름으로 다음과 같은 정보를 포함합니다.

Country Name ( 국가코드) [] : KR
State or Province Name ( 지역 ) [] : Seoul
Locality Name ( 시/군/구 ) [] : Seocho
Organization Name ( 회사명 ) [] : Hanbiro Inc
Organizational Unit Name ( 부서명 ) [] : Linux Team
Common Name ( 서비스도메인명 ) [] : www.hanbiro.com
Email Address [] : hanbiro@hanbiro.com

☞ CSR 항목에 대한 설명

Country Name : 이것은 두 자로 된 ISO 형식의 국가 코드입니다.
State or Province Name : 시 이름을 입력해야 하며 약어를 사용할 수 없습니다.
Locality Name : 이 필드는 대부분의 경우 생략이 가능하며 업체가 위치한 곳를 나타냅니다.
Organization : 사업자 등록증에 있는 회사명과 일치되는 영문회사명을 입력하시면 됩니다.
Organization Unit : "리눅스 관리팀", "윈도우 관리팀" 등과 같이 업체의 부서를 입력할 수 있습니다.
Common Name : 인증받을 도메인주소를 입력하시면 됩니다.

이 정보로 웹 사이트를 식별하므로 호스트 이름을 변경할 경우 다른 디지털 ID를 요청해야 합니다.
호스트에 연결하는 클라이언트 브라우저가 디지털 ID의 이름과 URL이 일치하는지를 확인합니다.

☞ CSR 항목 입력시 주의사항
* Common Name 에는 인증서를 설치할 사이트의 도메인의 이름을 정확하게 입력하셔야 합니다.
* Common Name 에는 IP 주소, 포트번호, 경로명, http:// 나 https:// 등은 포함할 수 없습니다.
* CSR 항목에는 < > ~ ! @ # $ % ^ * / \ ( ) ? 등의 특수 68 문자를 넣을 수 없습니다.
* CSR 생성후 서버에 개인키 (Private Key) 가 생성됩니다. 개인키를 삭제하거나 분실할 경우 인증서를 발급받아도 설치가 불가합니다. 따라서 꼭 개인키를 백업받아 두셔야 합니다.
* 정보입력과정 마지막에 나오는 A challenge password 와 An optional company name 두 항목은 입력하지 마시고 Enter 만 누르고 넘어가야 합니다. 두 정보가 입력될 경우 잘못된 CSR 생성될 수 있습니다.

↘ 위 주의사항을 유의하여 아래와 같은 절차로 CSR 생성을 진행합니다.
사용자 삽입 이미지

↘ 생성된 CSR 정보는 아래처럼 확인이 가능합니다.
사용자 삽입 이미지


5. 한비로에 접수--->6. 정식 인증서 발급

생성된 CSR 을 출력하면 아래와 같은 base64 형식의 문서를 볼 수 있습니다.
사용자 삽입 이미지

이문서의 첫 줄 -----BEGIN … 부터 마지막 줄 -----END … 까지 복사하여 지정된 SSL 접수페이지에 복사하여 붙여 넣은 뒤 입력정보와 함께 전송하면 접수가 완료됩니다.

7. 인증서 설치

접수한 CSR 파일이 정상적으로 생성되었다면 별다른 문제없이 인증서를 발급 받을 수 있습니다.
인증서 파일은 신청시 기록한 Email 주소를 통해 인증서를 첨부파일로 수신하게 됩니다.

① 인증서 서버에 복사

메일로 받은 인증서 파일을 압축을 해제하시면 AddTrustExternalCARoot.crt,UTNAddTrustServerCA.crt, 도메인.crt 3개의 파일을 보실 수 있습니다.
여기에서 필요한 파일은 UTNAddTrustServerCA.crt,도메인.crt 2개의 파일입니다.
이 파일을 서버에서 적절한 위치에 복사합니다.

② 웹서버 환경설정

아파치가 설치된 디렉토리로 이동하여 conf 디렉토리내의 httpd.conf 파일의 복사본을 만들어 둡니다.
웹서버 설정의 기본이 되는 파일로 만일의 경우를 대비하여 백업본을 유지하는 것이 좋습니다.
백업이 완료되면 vi 편집기를 이용하여 httpd.conf 내용중 아래사항을 설정하신 정보에 맞게끔 수정합니다.

httpd.conf 예문
사용자 삽입 이미지

1. <VirtualHost 127.0.0.1:443> 127.0.0.1 를 사용하는 장비의 아이피로 변경
 - 443 : SSL 통신포트번호 입니다. 일반적으로 웹서버는 80 포트를 사용합니다.
2. SSLEngine 스위치 off 를 on 으로 변경해 줍니다.
3. SSLCertificateFile / SSLCertificateKeyFile 에는 인증서의 설치경로와 개인키 파일의 경로를 적어 줍니다.

③ root 인증서 경로설정

SSLCACertificateFile 에는 root 인증서 위치를 알려주는 것으로 유저의 브라우저에 신뢰받는 CA리스트가 없을 경우를 위해 경로를 반드시 지정해 주어야 합니다.


④ 웹서버 재실행
사용자 삽입 이미지

설정파일의 정상적인 수정여부를 점검하기 위한 체크 ./httpd -t
수정된 사항의 적용을 위해 아파치 데몬정지 ./apachectl stop
아파치 데몬 활성화 ./apachectl startssl ( 아파치 데몬 활성화는 ./apachectl start 로 가능합니다. 여기에 ssl 를 붙여줌으로서 ssl 를 사용하게 됩니다. )

초기 개인키 생성시 입력했던 패스워드를 기억하시고 계실겁니다. SSL 실행을 위해 패스워드를 물어보는데 이때 개인키 생성시 입력했던 패스워드를 입력하시면 SSL 웹데몬이 활성화 됩니다.

⑤ 웹서버 포트점검

아래와 같이 활성화된 데몬의 포트를 점검해 봅니다.
사용자 삽입 이미지

⑥ 웹서비스 동작상태 점검

인터넷 주소창에 https://사용도메인 와 입력후 해당 페이지의 정상적인 동작 여부를 점검합니다.
SSL 설정한 사이트에 대한 정상적인 서비스 상태 점검
사용자 삽입 이미지

페이지 하단을 보시면 열쇠 아이콘이 보이게 됩니다. 아이콘을 클릭하게 되면 위와 같이 인증서 정보를 확인하실수 있습니다.


출처 :http://www.comodossl.co.kr/SSL/InstallGuide/Apache.htm

Posted by 1010
98..Etc/PHP2008. 11. 26. 14:00
반응형
왕초보, 왕비초보를 위한 PHP 개념정리 ”


PHP에 대해 알듯 모를듯하시는 분이 계시는것 같아 몇줄 적어 보았습니다.
저도 배우는 중이라 100% 맞는다고는 할 수 없지만 개념정도를 이해하시면 될 것입니다

1. 질문들이 PHP라 어렵다...뭐 그러시는 분들이 많으신것 같습니다,
  그러나 질문내용을 보면 대부분이 HTML에 관한 질문들입니다...
  화면을 구획으로 나누고, 테투리를 설정하고, 그림 등으로 장식하고 하는일은
  전부 HTML이 하는 일이라고 보시면 됩니다.

  즉  잘... 아주 잘..... 구성된 구획안에 ..... 여기까지는 HTML
  어떤 값 (데이터값,그림등)을 채워 넣는 단순한 역할을 하는 것이 PHP(mySQL쿼리)리고 보시면 됩니다.

2. 정리들어갑니다..
  사용자의 PC의 브라우저가 해석하는것은 HTML 입니다.
  그러므로 PHP는 사용자PC(Client)에서 적용되는 것이 아니고 웹서버에서 적용되는 것이지요  
  정리 : 사용자 PC는 HTML을 웹서버는 PHP을 해석한다고 보면 되겠네요

3. 우리가 흔히 아는 HTML 을 아래와 적었다면
  <table>
      <tr>
          <td>
              제목 1  
          </td>
      </tr>
   </table>
  화면출력은 '제목 1' 이라고 달랑 한줄 나옵니다.  動적이 아니라 靜적 이지요.....
  아무 가감없이 즉 주는대로 나옵니다.

4. 여기다가 동적 값을 구현해 주는게 PHP라고 보시면 됩니다.
  동적 값을 구현하려면 아래와 같이 해주어야 할 것 같군요
  즉, 아래의 예문에서
  'DB에서 제목줄을 읽어 그내용을 출력' 대신에
   웹서버에서 수행 할 명령을 적어주면 된다는 것 입니다

   <table>
       <tr>
           <td>
                DB에서 제목줄을 읽어 그내용을 출력  ---> 대신에 명령을 적어줌으로 각기 다른값들이 출력됨
           </td>
       </tr>
  </table>

5. 상기의 'DB에서 제목줄을 읽어 그내용을 출력' 대신에
   아래와 같은것을 적어 웹서버에 명령을 내려 볼까요.

   reeboard에서 번호 1번인것을 읽어서 그내용중 제목을 출력하라는 의미입니다

   while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){
       echo $data[subject];
   }

  그러면 웹서버에서 상기명령을 수행한후  그 결과값을 업로드 할 것입니다.
  즉 명령 내용에 따라 구획안에 들어갈 값이 변경 됩니다. 그걸 동적이라고 표현한 것입니다

6. 이해가 되셨으면 브라우저가 수행할 명령과 웹서버가 수행할 명령을 합쳐 볼까요...
  합치기 전 우선 두가지의 명령의 구분을 위해서 웹서버가 실행할 명령의 앞,뒤에 <?, ?>를 붙여 봅니다  
   <?    
   while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){
       echo $data[subject];
   }
   ?>

  브라우저 명령(html)과 웹서버 명령(<?, ?>)을 구분하였으니 이젠 합쳐 봅니다. 아래와 같이 되겠습니다.
  <table>
      <tr>
          <td>
              <?    
              while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){
                  echo $data[subject];
              }
              ?>
          </td>
      </tr>
   </table>

7. 이 파일을 수행하면 결과는 아래와 같이 될것 같군요..
  아마 프리보드의 제일 처음 레코드의 제목 "보드생성이 완료" 정도가 출력 될 것 같군요..
 
  어쨋든 지정된 글자(정적인 글자)가 아닌 보드의 활성데이터(동적)인 데이터를
  출력하게끔 만들어 주는것이 PHP라고 보면 되겠네요.

8. 또 정리 들어갑니다... client 와 web server 간의 작업순서를 나타낸 것입니다.

   가. 클라이언트(Client:사용자의 PC)
            ▽
            ▽ 클릭함으로써 보여줄 내용의 파일을 요청하게 됨
            ▽ 클릭한곳에 링크된 내용을 보여줄 파일을 요청(예;board.php 파일등)
            ▽
   나. 웹서버(Web Server:apache iis등)
            ▽
            ▽ 웹서버가 보여줄 내용의 파일을 보니 내용에 PHP가 있다,그러면 PHP를 실행.
            ▽ PHP 실행후 실행 결과를 HTML 텍스트로 만들어 클라이언트에 업로드
            ▽
   다. 클라이언트(Client:사용자의 PC)
            ▽
            ▽ 웹서버로 부터 전송되어온 HTML 파일을 해석하여 화면 출력(브라우저)
            ▽
   라. 클라이언트(Client:사용자의 PC 화면 출력)

   상기의 '나' 번에서 웹서버가 수행할 명령들을 내려주는것이
   파일내에서 <?....?>로 감싸져 있는 PHP 내용이 되겠네요.

9  약간 무리하게 내용을 구성한다면 아래와 같이 하셔도 되긴 됩니다만...
   하여간 이렇게 해도 된다는것을 보여드리기 위해..

   아래와 같이 명령 전체를 웹서버에 떠넘기는 것이지요..
   <?
   echo "<table>
             <tr>
                 <td>";
                    while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){
                       echo $data[subject];
                    }
   echo "       </td>
             </tr>
         </table>";
   ?>
   위의 예에서 스페이스는 인식하기 좋게 하기 위한 목적으로 대충 띄운 것입니다.
   별 의미가 없단 얘기입니다.

   가. 이렇게 하면 아무의미없이 echo 명령에 의해 <table><tr><td> 등을 쓸것이고
   나. 그다음에 동적인 명령으로으로 테이블을 읽어오고 쓰고
   다, 또다시 아무런 의미 없이 echo 명령에 의해 </td></tr></table> 등을 쓸것입니다

   프로그램의 효율성이 문제가 되겠지만 어쨋던 결과는 똑 같아집니다..

10. 또는 아래와 같이 써도 결과는 똑 같습니다..
   <table>
      <tr>
          <td>
              <?    
              while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){}
              ?>
              <?= $data[subject]?>
          </td>
      </tr>
   </table>
   여기서 <?=$변수명?> 은 그변수가 가지고 있는 값을 출력하라는 명령입니다

11. 또는 아래와 같이 써도 결과는 똑 같습니다.. 가장 많이 쓰는 방식이기도 합니다
    <?    
    while($Data = mysql_fetch_array(@mysql_query("select * from a_tn2_freeboard_list where no=1"))){}
     ?>
   <table>
      <tr>
          <td>
              <?= $data[subject]?>
          </td>
      </tr>
   </table>
   여기서 <?=$변수명?> 은 그변수가 가지고 있는 값을 출력하라는 명령입니다

12. 이해하셨다면.....우리가  어떤 화면을 소스보기하여 보면
    소스보기의 내용에는 PHP 프로그램은 없고  HTML 내용만 있는지 아실 겁니다.
    그것은   웹서버에서 수행한 결과를 브라우저가 해석해서 화면에 뿌려주기 때문에
   화면상에는 결과값만 있는 것입니다...

13. 이상 간단 개념 정리입니다... 그래도 의문점이 있으시면 질문주십시요...
    초보분들은 한번씩 읽으시고 간단개념 정리를 하셔요..
    개념정리가  어쩌면 더 중요할지도 모르기 때문입니다..

대충 이해가 되셨으리라 생각하고 이만 줄입니다.. 도움되시기를..

Posted by 1010
98..Etc/Etc...2008. 11. 25. 15:48
반응형

국내 Open api 리스트 및 링크

 

Naver Open api (http://openapi.naver.com)
 -  검색결과API : 지식in, 블로그, 카페/카페글, 전문자료, 웹문서, 책, 쇼핑, 백과사전,

국어/일어/영어사전,뉴스,지역,동영상,이미지,내PC
 -  검색관련 : 실시간 검색, 추천 검색 , 성인검색어, 오타변환, 바로가기
 -  서비스 API : 지식스폰서, 지도, 데스크톱 위젯

 

Daum Open api (http://dna.daum.net/apis/)

 - 검색 API : 신지식, 게시판, 카페, 블로그, 뉴스, 도서, 일본어, 동영상, 이미지

 - 키워드 API : 문맥 키워드 추천
 - UCC API : 블로그
 - 쇼핑 API :  디앤샾 상품 정보, 검색
 - 여행 API : 할인 항공권, 해외호텔,국내호텔및숙박, 여행상품검색
 - 인증 API : 어플리케이션 인증



Auction Open api (http://developer.auction.co.kr/Default.aspx)

 - 크게 2가지로 Web Application의 Service를 제공하는 APIv(일반 개발자를 대상으로)와 제휴 회사의 시스템과 통합을 

    지원하기 위해 제공되는 Partner API (ArcheSystem)

 - AUTHENTICATION, BUY, MEMBERE, SCROW, SELL, SEARCH API

 

오픈마루 Open api (https://api.openmaru.com/)

 - myid.net 관련 Open api

 - 스프링노트 관련 Open api

 - 귓속말 관련 Open api

 

Aladdin Open api (http://www.aladdin.co.kr)
 - 검색 API, 상품 API

 

Pandora Open api(http://interface.pandora.tv/)
 - Video 업로드 & 플레이 API

 

카멜레온 Open api (http://www.open-api.co.kr/)
- 카멜레온 Beta : User 관리, 동영상 업로드, 동영상 변환, 동영상 검색, 동영상 Display

 

maniadb Open api (http://www.maniadb.com/api/apispec.asp)
- 가수 검색 및 앨범 검색(현재 Key값 발부 안 하고 테스트가능)

 

위자드닷컴
http://wzdapi.com/

 

태그스토리 API
http://blog.tagstory.com/tagstory/10

한RSS API
http://www.hanrss.com/help/api/

이글루스 BlogAPI
http://help.egloos.com/2922

티스토리 BlogAPI
http://manual.tistory.com/719

 

기타 Open api

 http://pumfit.com/home/openapi
 http://lifepod.co.kr 

 

외국 Open API 링크 

 

야후
http://developer.yahoo.com/

MS
http://dev.live.com/

야후! 지도 오픈 API
http://kr.open.gugi.yahoo.com/

YouTube API
http://www.youtube.com/dev

Flickr API
http://www.flickr.com/services

구글맵 API
http://www.google.com/apis/maps/

아마존(Amazon Web Services)
http://www.amazon.com/gp/browse.html?node=3435361
[출처] 국내외 Open API 리스트 및 링크 (네이버 OpenAPI 공식 카페) |작성자 openapi
Posted by 1010