Thursday, August 28, 2008

HTTPS บน IIS 6 ด้วย OpenSSL

How to set https in XP with OpenSSL.

# ปกติเมื่อเราจะทำ https เราจะไปสร้างที่ windows server เพราะจะมี service เกี่ยวกับ certificate

# แต่บทยังความนี้จะเสนอ การทำ https โดยพึ่งแค่เครื่องเราเครื่องเดียวก็พอ ^^' แต่อาศัย OpenSSL

1. ดาวน์โหลด Win32OpenSSL-0_9_8g.exe

2. ติดตั้งเหมือนโปรแกรมปกติของ windows ทั่วไป

3. ก่อนอื่นเราต้องสร้าง new certificate request โดย

# คลิกขวา My Computer เลือก Manage

# ไปที่ Default Web Site คลิกขวา Properties ไปยังแท๊บ Directory Security

# คลิกที่ปุ่ม Server Certificate… จะปรากฏ Wizard ให้เราทำการสร้าง cer request





# “Create a new certificate” and “Prepare the request now, but send it later”. Next เรื่อยๆ

# กรอกๆ ไปให้เสร็จ เมื่อเสร็จแล้วจะได้ certreq.txt โดย default c:\certreq.txt



4. เมื่อเราสร้างไฟล์ certreq.txt แล้ว ให้เราใช้คำสั่งดังนี้เพื่อจะสร้าง key อาไรของมันนั่นอ่ะ ^^'

# เปิด Command Prompt แล้วพิมพ์ดังนี้

> cd c:\OpenSSL\bin

> openssl genrsa -des3 -out CA.key 1024

Loading 'screen' into random state - done
warning, not much extra random data, consider using the -rand option
Generating RSA private key, 1024 bit long modulus
..............++++++
.......++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase
:
Verify failure
3940:error:0906406D:PEM routines:DEF_CALLBACK:problems getting password:.\crypto \pem\pem_lib.c:114: 3940:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:.\crypto\pem\pem_li b.c:367:

# มัน failure เพราะว่า ^^' ใส่เป็น 1234 ซะงั้นมันเลยไม่ผ่าน เปลี่ยนใหม่ให้ซับซ้อนขึ้นอ่ะถึงจาผ่าน

Loading 'screen' into random state - done
warning, not much extra random data, consider using the -rand option
Generating RSA private key, 1024 bit long modulus
.......++++++
..................++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:


# ถ้าใส่คีย์ 2 ครั้งแล้วไม่แสดงข้อความอาไรแสดงว่าผ่านแหละ

# เมื่อผ่านแหละต่อเลยโดยสั่ง

> openssl req -new -key CA.key -x509 -days 1095 -out CA.cer

Using configuration from C:\OpenSSL\bin\openssl.cnf
Enter PEM pass phrase:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:th
State or Province Name (full name) [Some-State]:bkk
Locality Name (eg, city) []:bkk
Organization Name (eg, company) [Internet Widgits Pty Ltd]:home
Organizational Unit Name (eg, section) []:home
Common Name (eg, YOUR name) []:jui
Email Address []:some@hotmail.com

# จาเป็นประมาณเนี๋ย คือ กรอกคีย์ ที่เคยกรอกในตอนแรก และมันจะมี wizard ให้เรากรอกเรื่อยๆ ก็กรอกซะ

# ไม่จำเป็นต้องกรอกเหมือนที่เราสร้าง certreq.txt

# หลังจากกรอก wizard command ด้านบนเสร็จต่อเลยด้วยคำสั่ง

> openssl x509 -req -days 730 -in c:\certreq.txt -CA CA.cer -CAkey CA.key -CAcreateserial -out SelfSignedCert.cer

CA.cer -CAkey
CA.key -CAcreateserial -out SelfSignedCert.cer
Loading 'screen' into random state - done
Signature ok
subject=/CN=home/OU=home/O=home/L=bkk/ST=bkk/C=TH
Getting CA Private Key
Enter PEM pass phrase:

# ผลจาประมาณเนี๋ย คือ มันจาถามคีย์ที่กรอกในตอนแรกเหมือนขั้นทุกขั้นตอน

5. ถ้าทุกอย่างโอเคจะได้ไฟล์ C:\OpenSSL\bin\SelfSignedCert.cer

6. คัดลอก SelfSignedCert.cer ไปไว้ที่ C:\ SelfSignedCert.cer ถ้าจะให้ดีก็คัดลอกไปอยู่ที่เดียวกันกับ certreq.txt

7. กลับไป ข้อ 3 เครื่องหมาย # ที่ 3 คลิกที่ Server Certificate… ทีนี้จะขึ้นไม่เหมือนเดิมแหละให้เลือก





# “Process the pending request and install the certificate”.



# ไปเลือกไฟล์ C:\ SelfSignedCert.cer ที่ได้สร้างไว้ แค่นี้ก็เสร็จแหละ

8. ส่วนถ้าเราต้องการบังคับให้ IIS ใช้เฉพาะ 443 ห้ามใช้ 80 มันก็ต้องติ๊กอาไรเพิ่มนิดหน่อย

# โดยในหน้าเดียวกับที่มีปุ่ม Server Certificate… จะมีปุ่ม Edit.. ที่เราสามารถคลิกมันได้แหละ



# คลิกมันซะ แล้วติ้กให้มีเครื่องหมายถูกที่ “Require secure channel (SSL)”

# แค่เนี๋ยก็จะใช้ http ธรรมดาไม่ได้แหละ

# เสร็จแหละดูผลงานกัน https://localhost/

### เพิ่มเติมปัญหาที่อาจพบเมื่อสั่ง > openssl genrsa -des3 -out CA.key 1024

- อาจจะพบปัญหาดังนี้ หรือ ไม่พบก็ได้ ^^'


- ถ้าขึ้นประมาณว่า "Can not excute" ได้ให้ลอง ดาวน์โหลดเวอร์ชั่นอื่นๆ ดู

- เราต้องใช้ library ของเวอร์ชั่นนั้นๆ นะ ไม่ใช่ลงเวอร์ชั่น ใหม่แต่ไปใช้ library เวอร์ชั่นที่ลงก่อนหน้า - -'

ที่มา : dotnetyuppie.com

No comments:

Post a Comment

Popular Posts