May 13, 2013

OpenCA - CÀI ĐẶT SUBCA


Cài đặt các thư viện cần thiết:

yum install -y gcc-c++
yum install -y openssl-devel db4 db4-devel mysql-server mysql-devel perl-XML-Parser httpd


Kiểm tra hostname và đổi thành : subca.tvu.local
#vim /etc/sysconfig/network
# Restart sever.

Tạo người dùng mới phục vụ quá trình biên dịch và cấu hình openca


groupadd openca
useradd -g openca -u 1201 openca
 

Tạo database cho openca:
Start mysql:

# service mysqld start
# chkconfig mysqld on

Đổi password tài khoản root của mysql:
mysqladmin –u root –p 1063467
mysql -u root -p

mysql> show databases;

mysql>create database dbsubca;

mysql> grant all privileges on *.* to 'openca'@'localhost' identified by '1063467';

mysql> FLUSH PRIVILEGES;

mysql> exit;

Sửa file host /etc/hosts thêm vào cuối file như sau

diachiipcuamayban     diachi.local     diachi

Ví dụ : 192.168.1.2        tvuca.local                tvuca

Download openca-tool:

wget http://ftp.openca.org/openca/openca-tools/releases/current/binaries/linux/CentOS5.5-i686/openca-tools-1.3.0-1.el5.i386.rpm

Hoặc

wget  https://www.dropbox.com/s/b3xlka95tuxrx02/openca-tools-1.3.0-1.el5.i386.rpm

Cài đặt:  rpm -Uvh openca-tools-1.3.0-1.el5.i386.rpm

Download openca-base:
wget http://ftp.openca.org/openca-base/releases/current/sources/openca-base-1.1.1.tar.gz
Hoặc:  wget https://www.dropbox.com/s/8m00w36n5ou85k7/openca-base-1.1.1.tar.gz

Giải nén openca-base: 

tar -xvf
openca-base-1.1.1.tar.gz

cd openca-base-1.1.1


Tiến hành build:

./configure --enable-oscpd --enable-scep --with-openca-user=openca --with-openca-group=openca –with-web-host=$(hostname) --with-httpd-user=apache --with-httpd-group=apache --with-httpd-fs-prefix=/usr/local/OpenCA/www --with-module-prefix=/usr/local/OpenCA/perlmods


# ./configure --prefix=/opt/openca \
--with-ca-oganization="TVUSUBCA Labs" \
--with-httpd-fs-prefix=/var/www \
--with-httpd-main-dir=pki \
--with-db-name=dbsubca \
--with-db-host=localhost \
--with-db-user=openca \
--with-db-passwd=xxxxxxx \
--with--db-type=mysql \
--with--db-service-mail-account=subca@gmail.com \
--enable-oscpd --enable-scep

OpenCA sẽ được cài đặt vào /opt/openca. Sử dụng cơ sở dữ liệu MySQL với
database openca, user là openca password xxxxxxx. Web quản trị được lưu
tại thư mục /var/www/pki

Tiếp theo là biên dịch

# make

Hoàn tất cài đặt với lệnh make install. # make install-offline

Khởi động lại web server:
# service httpd restart

Lưu ý là trong openca 1.1.1 sẽ có lỗi, vì vậy cần tiên hành fix lỗi này.

Ghi đè 2 file này:

# cp User.pm /opt/openca/lib/openca/perl_modules/perl5/OpenCA/

# cp initServer /opt/openca/lib/openca/functions/


Chọn yes để thay thế file cũ.

Khởi động lại web server:

# service httpd restart

Hoàn tất cài đặt. Tiếp theo là cấu hình cho OpenCA.

Di chuyển đến thư mục cấu hình CA
Ở đây sẽ cấu hình cho mọi máy có thể truy cập mà ko cần ssl

cd /opt/openca/etc/openca


Chúng ta sẽ sữa đổi các file:

·         access_control/node.xml.template
·         access_control/ca.xml.template
·         access_control/ra.xml.template
·         config.xml

#vim access_control/node.xml.template

Trong thẻ:

<channel>
..
<protocol>ssl</protocol> ----> <protocol>.*</protocol>
..
<symmetric_keylength>128</symmetric_keylength> ----> <symmetric_keylength>0</symmetric_keylength>
..
</channel>

Lưu lại.

Tiếp theo sữa file: access_control/ra.xml.template

# vim access_control/ra.xml.template

<channel>
..
<protocol>ssl</protocol> ----> <protocol>.*</protocol>
..
<symmetric_keylength>128</symmetric_keylength> ----> <symmetric_keylength>0</symmetric_keylength>
..
</channel>

Lưu lại.

Tiếp theo sữa file /opt/openca/etc/openca/config.xml

vim config.xml

:$ để đến cuối file

<name>dataexchange_device_up</name>
<value>/dev/fd0</value> ---> <value>/tmp/openca</value>

<name>dataexchange_device_down</name>

<value>/dev/fd0</value> ---> <value>/tmp/openca</value>

Lưu lại.

Tiếp theo sửa file: openssl/openssl.cnf.template

# vim openssl/openssl.cnf.template

Trong [req] và [CA_defaut] tìm dòng:

default_md            = sha256 ---> đổi thành default_md            = sha1

Lưu lại.

Để các sửa đổi có hiệu lực:
# ./configure_etc.sh

Tạo symlink cho openca:

#cd /usr/sbin/
#ln -s /opt/openca/etc/init.d/openca openca


Khởi động openca:
#cd ~
#openca start

 ===> Nhập password admin:
Quá trình cài đặt SUBCA đã xong, bạn kiểm tra kết quả bằng cách gõ vào trình duyệt: http://diachimaycairooca/pki
 Accout là admin và pass lúc bạn start openca trên.

 Tiếp theo là khởi tạo SUBCA,



Để tạo chứng chỉ cho SubCA, chúng ta cũng phải khởi tạo cơ sở dữ liệu, tạo khóa bí mật cho SubCA. Tiếp đó khởi tạo 1 yêu cầu cấp phát chứng chỉ. Do đây chỉ là SubCA nên chúng ta không thể tự ký vào yêu cầu như RootCA. Yêu cầu này phải được gửi sang cho RootCA, sau khi được sự đồng ý phát hành chứng chỉ của RootCA, thì SubCA mới có thể sử dụng chứng chỉ đó để ký và phát hành các chứng chỉ khác cho người dùng.
Quá trình gửi yêu cầu cấp phát chứng chỉ của SubCA sang RootCA được tiến hành như sau:
SubCA khởi tạo yêu cầu cấp phát chứng chỉ. Sau đó chọn Export CA Certificate Request, để xuất yêu cầu này ra thành 1 file nén theo định dạng tar (mặc định được lưu ở /tmp/openca_local). Chúng ta giải nén file openca_local này ra được 1 file careq.pem, đây là file yêu cầu cấp phát chứng chỉ của SubCA theo định dạng PEM (Privacy Enhanced Mail).
File này được gửi sang cho RootCA, người quản trị sẽ khởi tạo 1 yêu cầu cấp phát chứng chỉ dựa theo file careq.pem của SubCA. Sau đó RootCA có nhiệm vụ ký và cấp phát chứng chỉ cho SubCA. Người quản trị sẽ lấy chứng chỉ của SubCA về theo định dạng PEM (subcacert.pem). Và gửi lại cho SubCA file subcacert.pem
Bên SubCA nhận được chứng chỉ do RootCA phát hành. Chúng ta sẽ phải tạo ra 1 file nén của chứng chỉ với tên gọi là openca_local sau đó up lên thư mục /tmp/. Tiếp đó về giao diện khởi tạo CA, chọn Import CA certificate (approved by Root CA) để import chứng chỉ của SubCA vào hệ thống.
Cuối cùng là Rebuild CA Chain.

Chúc thành công.



1 comment:

  1. Importing CA Certificate Failed from /tmp/openca_local!
    Chào anh... Khi em import cer thì nó lại báo như thế này... Em không biết nguyên nhân tại sao cả

    ReplyDelete