인증서 문제

web 2008. 12. 15. 23:17

ssl 서버를 구축할 때, 다음의 문제가 생겼다.

 

 

[Mon Dec 15 11:34:07 2008] [warn] RSA server certificate CommonName (CN) `VeriSign Trial Secure Server Test Root CA' does NOT match server name!?
[Mon Dec 15 11:34:07 2008] [error] Unable to configure RSA server private key
[Mon Dec 15 11:34:07 2008] [error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch

 

해결은

openssl x509 -noout -text -in ssl_2008_customer.crt

openssl rsa -noout -text -in ssl_2008_customer.nodes.key

 

이 두개의 modulus가 동일을 한지 확인하면 된다. 서로 같지 않으므로, 이 것은 제대로 ssl을 전달해주지 못한 것으로 판단

 

 

 


출처
http://www.enterprisessl.com/ssl-certificate-support/server_faq/ssl-server-certificate-apache.html


Error: "OpenSSL:error:0B080074:x509 certificate outines:x509_check_private_key:key values mismatch"
This error message occurs if you are using the incorrect certificate or private key during installation. So you need to use the matching key and certificate files.
To check that the public key in your cert matches the public portion of your private key, view both files, and compare the modulus values with the following instructions:
To view the certificate:
openssl x509 -noout -text -in certfile
To view the key:
openssl rsa -noout -text -in keyfile

The "modulus" and "public exponent" portions in the key and the certificate must match exactly. If the "modulus" do not match exactly then you are using either the incorrect private key or certificate.

 

 

 

'web' 카테고리의 다른 글

rewrite에서 exclude 사용하기  (0) 2009.01.30
자바스크립트 - Dom 생성하기  (0) 2009.01.06
인증서 문제  (0) 2008.12.15
Apache SSL 서버 만들기  (0) 2008.11.25
SQL Injection 공격에 따른 웹 어플 대응 (java)  (0) 2008.11.07
아파치에서 MaxClients 수정  (0) 2008.09.02
Posted by 김용환 '김용환'

댓글을 달아 주세요

: bad interpreter:  No such file or directory

 

파일이 바이너리인지, 아니면,  \r\n CR/LF 문제인지 확인하면 오케

 

 

 

 

 

 

'unix and linux' 카테고리의 다른 글

bash 에서 ( 사용관련 팁  (0) 2009.03.24
SED 튜터리얼 sed tutorial  (0) 2009.03.13
쉘 에러 bad interpreter:  (0) 2008.12.12
/etc/sudoers  (0) 2008.11.19
ipcs  (0) 2008.11.07
파일 길이가 큰 파일 옮기기 (split를 이용하여 리눅스 파일 나누기 합치기)  (0) 2008.06.26
Posted by 김용환 '김용환'

댓글을 달아 주세요

 

제한은 없다.. 다만 시스템 리소스와 연관관계가 있음..

다음 대답 보기

 

http://kbase.redhat.com/faq/docs/DOC-5379

 

 

 

What would be the maximum number of NFS clients supported by a Red Hat Enterprise Linux 3 NFS server?

Created on: Jan 4, 2005 6:00 PM - Last Modified:  Jan 6, 2005 6:00 PM

There is no hard limit for the NFS client count - it depends on the system resources (memory, filesystem, storage subsystem performance, etc). However, the socket buffer where the nfsds is listening to (obtain the requests from) roughly has room for

 



 (number_of_nfsd + 3)

 

requests. Adding the fact that each nfsds always carries its work until completion before grabbing the next request, a Red Hat Enterprise Linux 3 NFS server can take

 



 ((number_of_nfsd * 2) + 3)

 

simultaneous requests at a time.

 

Note: This is a theoretical number and it depends on the resources and the nature of the requests. For example, if any NFSD is blocked in the I/O path, the unprocessed requests is still sitting in the socket buffer and may get timeouts from the client side. Re-transmits would occur and the server capacity would start to drop.

 

 

Posted by 김용환 '김용환'

댓글을 달아 주세요

Apache SSL 서버 만들기

web 2008. 11. 25. 06:15

 

1) openssl 확인 할 것

 

rpm -qa | grep openssl


openssl-devel-0.9.7a-43.17.el4_6.1
xmlsec1-openssl-1.2.6-3
openssl-0.9.7a-43.17.el4_6.1
openssl096b-0.9.6b-22.46

 

2) 개인키 생성

openssl genrsa -des3 -out 파일명.key 1024

(패스워드 대충 치기)

 

3) 개인키 확인

openssl rsa -noout -text -in  파일.key

 

4) CSR 파일 생성

openssl req -new -key ssl_2008_pubids.nodes.key -out ssl_2008_pubids.csr

 

5) 인증서 받기

http://www.verisign.com 에 접속하여 FREE SSL Trial 을 클릭합니다.

원래는 돈주고 사야 하나.. 14 일짜리 trial을 신청하고, 이메일을 통해서 인증서를 받는다.

다른 것은 대충 써도 되나, 이메일만큼은 정확하게 쓸 것!!

 

After testing your Trial SSL Certificate, you will need to purchase a full-service Secure Site SSL Certificate.
As VeriSign has a full range of products to choose from, a sales representative will contact you to assist in
implementing an appropriate security solution specific to your business requirements. Should you wish to contact
our sales person immediately, please dial (866) 893-6565 option 3 or send an email to internet-sales@verisign.com.

Thank you for your interest in VeriSign!

 

6) 메일의 인증서를 복사하고 사용

   임의의파일명.crt 의 파일명을 만든다.

 

cat > 파일명.crt

-----BEGIN CERTIFICATE-----

...

-----END CERTIFICATE-----

 

7) 아파치 설정 추가

 <IfModule mod_ssl.c>
        SSLRandomSeed startup builtin
        SSLRandomSeed connect builtin
        Listen 443
        AddType application/x-x509-ca-cert .crt
        AddType application/x-pkcs7-crl    .crl
        SSLPassPhraseDialog  builtin
        SSLSessionCache         dbm:/usr/local/apache/logs/ssl_scache
        SSLSessionCacheTimeout  300
        SSLMutex  file:/usr/local/apache/logs/ssl_mutex
</IfModule>

<VirtualHost *:443>
    DocumentRoot /usr/local/tomcat/webapps/ROOT
    Servername *.google.com

.....

 

        <IfModule mod_ssl.c>
                SSLEngine on
                SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:!SSLv2:+EXP:+eNULL
                SSLCertificateFile /usr/local/apache/conf/ssl.crt
                SSLCertificateKeyFile /usr/local/apache/conf/ssl.key
                SSLCACertificateFile /usr/local/apache/conf/ssl.intermediate
                <Directory "/usr/local/apache/cgi-bin">
                SSLOptions +StdEnvVars
                </Directory>
                SetEnvIf User-Agent ".*MSIE.*" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
        </IfModule>
</VirtualHost>  

 

 

8) 아파치 리스타트

'web' 카테고리의 다른 글

자바스크립트 - Dom 생성하기  (0) 2009.01.06
인증서 문제  (0) 2008.12.15
Apache SSL 서버 만들기  (0) 2008.11.25
SQL Injection 공격에 따른 웹 어플 대응 (java)  (0) 2008.11.07
아파치에서 MaxClients 수정  (0) 2008.09.02
oscache 사용 간단기  (0) 2008.08.27
Posted by 김용환 '김용환'

댓글을 달아 주세요

method Inlining (JVM)

java core 2008. 11. 11. 02:30

출처

http://java.sun.com/developer/technicalArticles/Networking/HotSpot/inlining.html

 

JVM에서 메소드 인라이닝이란, JVM이 메소드를 바로 호출하지 않고, 바로 그 자리에 리턴된 상수값또는 메소드를 넣어서 최대한 속도를 높이는 것을 말한다.

 

특징은 다음과 같다.

 

  • 메소드 콜이 없어서 부하를 낮춘다. No method call
  • 다이나믹 디스패치가 없다. No dynamic dispatch
  • 상수값이 주어지도록 한다. Possible to constant-fold the value, eg. "a.foo()+2" becomes 5 with no code executed at runtime.
  •  

    과거에는 final을 추가하여 inlining이 하도록 지시하게 하여 속도를 최대한 높일 수 있도록 하였다는 점이 주목적이다.

    (임베디드에서는 final이 필수적이다. 속도 빠르게 해야 와따니까.)

    하지만, 이런 테크닉이 모듈화에 적잖이 부담을 줄 수도 있다.

     

    그런데 말이지. HotSpot JVM은 final로 선언하지 않아도 알아서 inlining이 가능하다.

     

    모든 클래스들이 로딩할때마다 inlining을 하다가, 체크를 해보고 아니다 싶으면, 다시 도로 푸는 작업을 한다고 한다. deoptimized를 한다고 표현하고 있다.

     

     

    On every class load, all these assumptions are checked and, if violated, the now-incorrect compiled code is retired (deoptimized).

    Posted by 김용환 '김용환'

    댓글을 달아 주세요

    ipcs

    unix and linux 2008. 11. 7. 20:40

    IPC(Inter Process Communication)는 message queue( q), shared mem ( m), semaphore (s)의 자원의 현황을 알려준다.

     

    ipcs -l 을 사용하였다.

     


    ------ Shared Memory Limits --------
    max number of segments = 4096
    max seg size (kbytes) = 1048576
    max total shared memory (kbytes) = 8388608
    min seg size (bytes) = 1

    ------ Semaphore Limits --------
    max number of arrays = 128
    max semaphores per array = 250
    max semaphores system wide = 32000
    max ops per semop call = 32
    semaphore max value = 32767

    ------ Messages: Limits --------
    max queues system wide = 16
    max size of message (bytes) = 8192
    default max size of queue (bytes) = 16384

     

     

    ipcs 만 치면 이렇게 나온다.

     

    ------ Shared Memory Segments --------
    key        shmid      owner      perms      bytes      nattch     status     

    ------ Semaphore Arrays --------
    key        semid      owner      perms      nsems    
    0x00000000 3964928    www       600        1        
    0x00000000 3997697    www       600        1        
    0x00000000 4030466    www       600        1        
    0x00000000 4063235    www       600        1        
    0x00000000 4096004    www       600        1        

    ------ Message Queues --------
    key        msqid      owner      perms      used-bytes   messages   

     

    자원을 삭제할 때는 ipcrm 라는 명령어를 사용하면 된다.

     

    왜 이런 것이 필요할까?

     

    그것은 특정 프로세스가 가지고 있던 자원들을 해제하지 않으면서 생긴 문제를 해결하기 위함이다.

    예를 들어 DBMS에 대해서 kill을 했지만, IPC 자원을 해제않는 경우를 확인할 수 있고, 이를 통해서 자원이 낭비되고, 이런식으로 계속 문제가 되면, 시스템 전체에 영향을 미칠 수 있기 때문이다.

     

    예를 들어 apache 데몬의 경우 restart를 했는데, 다음과 같이 세마포를 계속 가지고 있을 수 있다.

     

    ------ Semaphore Arrays --------
    key        semid      owner      perms      nsems    
    0x00000000 13434880   www       600        1        
    0x00000000 13467649   www       600        1        
    0x00000000 13500418   www       600        1        
    0x00000000 13533187   www       600        1        
    0x00000000 13565956   www       600        1 

    ....

    ....

    ....

     

     

     

    그러면,

    ipcs -s |sed "/em/d" | for i in `awk '{print $2}'` ; do ipcrm sem $i ; done

     

    이 명령어를 통해서 싹 정리하면 좋다.

     

     

    'unix and linux' 카테고리의 다른 글

    쉘 에러 bad interpreter:  (0) 2008.12.12
    /etc/sudoers  (0) 2008.11.19
    ipcs  (0) 2008.11.07
    파일 길이가 큰 파일 옮기기 (split를 이용하여 리눅스 파일 나누기 합치기)  (0) 2008.06.26
    bash 문자열 조작  (0) 2008.06.20
    고급 Bash 스크립팅 가이드  (0) 2008.06.20
    Posted by 김용환 '김용환'

    댓글을 달아 주세요

     

    아주 쓸만한 내용들이 모여있어서 출처를 가지고 옴..

     

     

    출처

    http://www.abyul.com/zbxe/aMST_ETC/5597

     

     

     

    출처 : http://www.jia-web.net/webtip/php/tip/dbcommand.html

    mysql 명령어 요약( db생성, user생성, db-user적용)  


    0) Root로 MySQL 연결


    >mysql -u root -ppassword
    >use mysql %lt;- mysql db에서 사용자 생성


    1) 사용자 생성하기


    insert into db values('localhost','디비명','계정명','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
    insert into db values('localhost','jacqiris','jacqiris','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

    desc db 해서 host,db,usr 빼고 남은 필드 숫자만큼..Y


    mysql>desc user host,user,password 이외의 모든 칼럼 숫자를 세서 그 숫자만큼 'N'을 적어준다
    위의 'N'들은 Root 같은 권한을 사용하지 못하도록 하는 설정이다


    2) 데이터베이스 생성하고 USER에게 DB 할당 사용하기


    mysql> create database jacqiris;
    Query OK, 1 row affected (0.00 sec)



    mysql> show databases;
    +----------+
    | Database |
    +----------+
    | jacqiris |
    | mysql |
    +----------+
    2 rows in set (0.00 sec)
    mysql 에 쓰일 계정과
    사용할 데이터베이스명을 지정하면 되는데 'Y'는 필드수만큼 지정하면 된다
    (필드수는 >desc db 명령으로 host,db,user를 제외한 나머지를 'Y'로 한다)

    insert into db values('localhost','디비명','계정명','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
    insert into db values('localhost','jacqiris','jacqiris','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');


    그외 DB관련 작업
    DB생성:
    mysql> create database DB명 ( or % mysqladmin -u root -p create DB명 )
    DB삭제:
    mysql> drop database DB명
    DB사용:
    mysql> use DB명 (어느 DB에서 테이블들을 만들고 작업을 할것인지 사용할 DB를 지정해줌)
    DB변경:
    mysql> alter database db명 DEFAULT CHARACTER SET charset (4.1이상에서만 available)


    3) DB 접속하기


    C:>mysql -u jacqiris -p1004
    ERROR 1045: 'jacqiris@localhost' 사용자는 접근이 거부 되었습니다. (Using passwor d: 예)
    당연히 에러가 난다..^^*


    새로 만든 DB를 mysql에 적용하기 위하여 reload 해줘야 한다


    C:>mysqladmin -u root -p reload (or mysql> FLUSH PRIVILEGES;)
    Enter password: ********


    다른서버 접속
    mysql -u 사용자 -p 사용DB {-h 접속호스트}
    -h로 다른 서버에 존재하는 MySQL접속시 다음과 같이 MySQL DB에 설정해줘야 한다.


    mysql> select host,db,user from db;
    +-----------+----------+----------+
    | host | db | user |
    +-----------+----------+----------+
    | localhost | db_nalog | nalog |
    | localhost | jacqiris | jacqiris |
    +-----------+----------+----------+
    2 rows in set (0.00 sec)
    위와 같이 host가 localhost로만 지정되어있을 경우
    다른 컴에선 그 mysql로 접속해서 작업을 할수 없다
    다른 컴에서 접속가능하게 하기 위해서는

    mysql> INSERT INTO user VALUES('접근 허용할 ip','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

    mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('접근허용할 ip','사용DB','사용자','Y','Y','Y','Y','Y','Y');

    mysql> FLUSH PRIVILEGES; (or % mysqladmin -u root -p flush-privileges )

    4) 테이블 만들기



    mysql>CREATE TABLE free (
    id int(11) unsigned NOT NULL auto_increment,
    thread int(11) unsigned default '0',
    depth int(11) unsigned NOT NULL default '0',
    name varchar(20) NULL,
    email varchar(30) NULL,
    pass varchar(10) NULL,
    title varchar(70) NULL,
    comment text,
    bangsik varchar(4) null,
    date int(11) NULL,
    ip varchar(16) NULL,
    see int(11) unsigned default '0',
    recommend int(11) unsigned default '0',
    cmt_cnt INT UNSIGNED DEFAULT '0' NOT NULL,
    PRIMARY KEY (id)
    );
    ※ 정리 : mysql에서 작업을 하고자 한다

    DB 생성 -> user 생성 -> user에게 db 쓸 권한 주고 user로 접속 테이블을 만들어 쓴다


    ^^*
    ※ 위와 같은 일련의 작업을 GRANT 명령을 이용한 사용자를 생성해보자


    mydb 라는 DB를 만들고, 사용자는 emchun, 사용권한은 select,insert,update,delete,create,drop을 주소 싶다


    1] create database mydb;
    --데이터베이스 생성


    2] grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on mydb.* to emchun@localhost identified by '0000';
    -- emchun 아이디와 0000이라는 비밀번호를 가진 사람이 mydb의 select,insert,update,delete,create,drop권한이 있다


    3] grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on mydb.* to emchun@'%' identified by '0000';
    -- 위와 같으나 localhost아닌 다른곳에서의 접속 허용


    mysql> create database mydb;
    Query OK, 1 row affected (0.00 sec)


    mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on mydb.* to emchun@localho st identified by '0000';
    Query OK, 0 rows affected (0.00 sec)


    mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on mydb.* to emchun@'%' ide ntified by '0000';
    Query OK, 0 rows affected (0.00 sec)



    mysql> select host,db,user from db;
    +-----------+----------+----------+
    | host | db | user |
    +-----------+----------+----------+
    | % | mydb | emchun |
    | localhost | mydb | emchun |
    +-----------+----------+----------+
    2 rows in set (0.00 sec)
    필드 추가 수정

    예로 게시판을 만들다가 추천하는 필드를 한개 더 만들고 싶을때


    필드 추가
    alter table 테이블명 add 추가필드명 필드타입
    예) alter table bbs add recommend int(11);


    그런데 이렇게만 하면 recommend 값에 다른값이 들어가게 된다
    기본값 0으로 넣고 싶을 경우 필드의 속성을 수정해야 한다


    필드 수정
    alter table 테이블명 modify 수정필드명 필드타입
    예) alter table bbs modify recommend int(11) unsigned default '0';


    primary key 나 그외 필드 추가 수정
    차례로 다음 쿼리를 수행해주세요.


    1) primary key 속성 추가 : no가 겹치는게 있으면 에러가 나므로 미리 데이타가 unique하게 만들어두고 해야합니다.
    alter table 테이블명 add primary key(no);
    2) auto_increment 속성 추가 및 default를 null로 : auto_increment 옵션으로 default null은 사실상 의미가 없습니다.

    Posted by 김용환 '김용환'

    댓글을 달아 주세요

    메모리 덤프 뜨기

    java core 2008. 9. 23. 01:07

    메모리 덤프하기

     

    1.     옵션 추가

    Catalina.sh에 우선 이 옵션을 사용한다.  Depth 15로 잡으면, 메모리 인스턴스의 reference또는 상속관계를 15단계까지 포함한다는 내용

    -agentlib:hprof=heap=dump,file=cms.txt,depth=15

      

    2.     아파치 스톱 : 더 이상 아파치 요청이 들어오지 않도록 함, 메모리 덤프시에는 서비스를 정상적으로 처리를 못함

    apachctl stop

     

    3.     메모리 덤프

    kill -3 java프로세스id

    => 바이너리 메모리 덤프, signal을 보내면 메모리를 cms.txt에 저장

     

    4.     /usr/local/tomcat/lucy8080/bin cms.txt 메모리 덤프파일을 확인, 더 이상 파일 크기가 커지지 않으면, 메모리 덤프 완료.

    보통, 메모리 싸이트가 200m이상일 때 덤프를 뜲.

    너무 많이 쌓인 상태에서는 파일 디스크나 오류로 인해서 정상적인 메모리 덤프가 안될 수도 있음. 너무 데이터량이 적으면, 분석하기 어려움. 적당하게 판단할 필요 있음

    'java core' 카테고리의 다른 글

    FreeMarker 바로 간단 사용하기  (0) 2008.12.31
    method Inlining (JVM)  (0) 2008.11.11
    메모리 덤프 뜨기  (0) 2008.09.23
    자바 튜닝 관련  (0) 2008.08.27
    자바 Security 알고리즘 보기  (0) 2008.06.20
    jdk 6 update 6 Release Notes  (0) 2008.05.30
    Posted by 김용환 '김용환'

    댓글을 달아 주세요

     

    Linux에서의 /etc/sudoers 수정하여 특정 사용자에게 패스워드 실행시키기

    우선 이 파일에서는 mask가 잡혀 있고, /etc/sudoers에 chattr로 해서 함부로 수정이 안가게 해놓은 상태이다.

    www 계정에 대해서 sudo 수행시 패스워드 입력 없이 ifdown,ifup을 사용할 수 있도록 조치하였다.

     

     

     


    chattr -i /etc/sudoers
    chmod u+w /etc/sudoers

     

    echo "Defaults:www !authenticate" >> /etc/sudoers
    echo "Cmnd_Alias IFUPDOWN=/sbin/ifup,/sbin/ifdown" >> /etc/sudoers
    echo "www ALL=IFUPDOWN:ALL=/sbin/swapon" >> /etc/sudoers

     

    chmod u-w /etc/sudoers
    chattr +i /etc/sudoers

    Posted by 김용환 '김용환'

    댓글을 달아 주세요