前前後後弄了快兩週,各種奇奇怪怪的事情幾乎都給我碰上了。最後的心得是OpenCA的mail-archive真的是好東西。下面的安裝記錄不一定照著做就能OK,但是我會註明一些安裝過程中可能比較有問題的(安裝過程中最討厭的部份是不會給你任何警告還是錯誤訊息,等到你整個跑起來才發現設定錯了) 安裝環境: Ububtu不知道幾板,我能不用apt-get就盡量不用,因此這個安裝記錄應該也能裝在freeBSD上頭才對 :) 基本上一定要裝的: OpenSSL: 這個沒裝應該是沒辦法動 Apache: 我是裝1.3.x系列的,module還要自己掛,設定的部份我會寫在別篇。 DBMS: 無痛安裝的話可以選用BerkeryDB,這個部份會遇到的問題應該是最少的。其次是mySQL,碰到的問題應該不會太大,最後是postgreSQL,如果你已經用mySQL用很習慣的話 switch到postgreSQL是個有點痛苦的課程,使用上跟觀念上有點差異。Oracle...不久的將來我應該會挑戰這個看看。這篇教學中我使用的是PostgreSQL 8.2.4 最後要特別強調的是,這個教學只有把OpenCA裝起來CA, RA, CA-node, RA-node能夠work而已,完全沒有Security的概念(不論是軟體設定面還是實體使用面),請自己參考各類文件把這些東西設定好。 1.安裝PostgreSQL,過程可以參考
先前寫的 2.設定PostgreSQL,參考了官方教學手冊的設定,操作如下:
su - postgres
psql -d template1
psql> create user openca with password 'openca' createdb nocreateuser;
psql> \q
psql -d template1 -U openca
psql> create database openca;
psql> \q
如此一來我們就建了一個openca的資料庫,還有一個使用者帳號openca,密碼同openca (如果你postgreSQL沒有跟openCA擺在一起的話,要設定一下連線來源) 3. 安裝OpenSSL, LDAP Library, Perl module,Apache+mod_ssl 請參考成大的
投影片 不過投影片在openca安裝那邊有些地方有點錯誤,請跳過..
如果你是ubuntu的使用者,在安裝mod_ssl-2.8.22-1.3.33發生錯誤訊息的話,請輸入
rm -f /bin/sh ln -s /bin/bash /bin/sh
原因不明,但是It works ;-)
最後是安裝最麻煩的OpenCA了,我裝的是0.9.3-rc1,我試了幾次參數的調整,這組應該是比較OK的,先裝RA: ./configure --prefix=/usr/local/openra --with-openssl-prefix=/usr/local/ssl --with-module-prefix=/usr/local/openra/modules --with-node-prefix=
ra-node \ --with-web-host=localhost
--with-httpd-user=nobody --with-httpd-goup=nobody --with-httpd-fs-prefix=/usr/local/openra/httpd --with-engine=no \ --enable-dbi --with-engine=no --enable-rbac --with-hierarchy-level=ra --enable-ocspd
--with-db-type=Pg --with-db-user=openca --with-db-name=openca \
--with-db-host=localhost --with-db-port=5432 --with-db-passwd=openca 這一套參數最後會把RA安裝在/usr/local/openra底下,執行使用者為nobody/nobody(請檢查你的passwd有沒有這個人),使用的資料庫為postgreSQL(Pg),有幾個地方我用粗體字標起來,這個部份視需要修改。編譯及安裝: make ; make
install-online; make clean (如果你看投影片在裝的話很容易搞混RA跟CA,這邊真的很容易搞混)
接著來到/usr/local/openra/OpenCA目錄下,先修改var目錄與etc/servers的權限: chmod -R 777 var cd etc/servers chmod -R 644 * 最後回到etc目錄,修改最麻煩的config.xml,修改前請先將config.xml備份,不然改錯了很麻煩。 這個部份還是麻煩看一下投影片,有幾個地方是一定要做修改的: ca_organization -> CA ca_locality -> KH ca_country -> TW 再來請看一下資料庫設定的地方有沒有錯誤,這邊請再三確認,如果你後面已經用了./configure_etc的話,好像再怎麼改都沒有用了。 特別注意db_namespace這個地方,我不確定0.9.3-rc1是不是有用預設,但是如果你看到他的value有東西的話,請把它刪掉,那是給oracle用的,如果你忘了改的話,最後上線後可能沒辦法做Database Initalization。 往下搜尋[exchange]關鍵字,應該會到dataexchange configuration的部份,請將0.的部份用<!-- -->註解掉(這邊別弄混打成--!%gt; 我在這邊卡了一個多小時看到mail-list才發現我破壞了XML文件的完整度,而安裝程式也沒給任何錯誤提示...), 然後把2.有關RA被comment掉的部份取消。 再往下找[device]關鍵字,這邊是dataexchage的裝置,預設值是指到/dev/fd0 這個是軟碟機,不過這個年代應該很少人用了,真正講究一點的話CA跟RA主機應該是分開的,可以將參數指到USB隨身碟去,之前有爬到有人直接開nic丟過去(兩台電腦+一條cross-over網路線),我這邊列出最後我參考到的參數,路徑的部份要稍微留心一下,不然最後ca-node要丟東西給ra-node會有問題。
RA: config.xml: node acts as an RA only
dataexchange_device_up: Replace /dev/fd0 改成 /usr/local/openca/OpenCA/var/tmp/ca-down
dataexchange_device_down: Replace /dev/fd0 改成 /usr/local/openra/OpenCA/var/tmp/ra-down
dataexchange_device_local: Replace /dev/fd0 改成 /usr/local/openra/OpenCA/var/tmp/ra-local
都好了之後請執行configure_etc.sh,如果你的config.xml格式正確的話應該會順利輸出,如果結構有問題的話會跳出utf8_latin1_selector.sh找不到的錯誤(天曉得最後是config.xml的問題...) 都OK的話就可以先啟動RA了
./openca_rc start 再來回頭裝CA,安裝變數設定跟RA很像,但是有些地方不太一樣,小心別搞混了 : ./configure --prefix=/usr/local/openca --with-openssl-prefix=/usr/local/ssl --with-module-prefix=
/usr/local/openca/modules --with-node-prefix=
ca-node --with-web-host=localhost --with-httpd-user=nobody --with-httpd-goup=nobody --with-httpd-fs-prefix=
/usr/local/openca/httpd --enable-ocspd --with-engine=no --enable-dbi --with-engine=no --enable-rbac --with-hierarchy-level=
ca --with-db-type=Pg --with-db-user=openca --with-db-name=openca \ --with-db-host=localhost --with-db-port=5432 --with-db-passwd=openca 然後make ;make
install-offline; make clean CA會被安裝到/usr/local/openca下。接下來到config.xml設定之前的動作都與安裝RA的部份相同,最後是設定config.xml
找一下dataexchage的部份,一樣把0.的部份comment掉,然後把1.的CA部份的註解拿掉。 最後是dataexchage裝置的部份,我最後使用的參數如下:
dataexchange_device_up: Replace /dev/fd0 改成 /usr/local/openca/OpenCA/var/tmp/ca-up
dataexchange_device_down: Replace /dev/fd0 改成 /usr/local/openca/OpenCA/var/tmp/ca-down
dataexchange_device_local: Replace /dev/fd0 改成 /usr/local/openra/OpenCA/var/tmp/ra-local
都好了之後請執行configure_etc.sh,都OK的話就可以啟動CA了 其實剩下來的部份問題比較少,主要是Apache設定與Alias有關的部份有沒有設定正確 httpd.conf裡有關路徑的設定應該是這樣的:
#OpenCA Alias /ca /usr/local/openca/httpd/htdocs/ca/ Alias /ca-node /usr/local/openca/httpd/htdocs/ca-node/ ScriptAlias /cgi-bin/ca/ /usr/local/openca/httpd/cgi-bin/ca/ ScriptAlias /cgi-bin/ca-node/ /usr/local/openca/httpd/cgi-bin/ca-node/ #OpenRA Alias /ra /usr/local/openra/httpd/htdocs/ra/ Alias /ra-node /usr/local/openra/httpd/htdocs/ra-node/ Alias /pub /usr/local/openra/httpd/htdocs/pub/ Alias /ldap /usr/local/openra/httpd/htdocs/ldap/ ScriptAlias /cgi-bin/ra/ /usr/local/openra/httpd/cgi-bin/ra/ ScriptAlias /cgi-bin/ra-node/ /usr/local/openra/httpd/cgi-bin/ra-node/ ScriptAlias /cgi-bin/pub/ /usr/local/openra/httpd/cgi-bin/pub/
ScriptAlias /cgi-bin/ldap/ /usr/local/openra/httpd/cgi-bin/ldap/
SSLOptions +StdEnvVars AllowOverride None Options ExecCGI Order allow,deny Allow from all < /directory> <directory> SSLOptions +StdEnvVars AllowOverride None Options ExecCGI Order allow,deny Allow from all < /directory> <directory> SSLOptions +StdEnvVars AllowOverride None Options FollowSymLinks Indexes Order allow,deny Allow from all < /directory> <directory> SSLOptions +StdEnvVars AllowOverride None Options FollowSymLinks Indexes Order allow,deny Allow from all < /directory> &ly;directory> SSLOptions +StdEnvVars AllowOverride None Options FollowSymLinks Indexes Order allow,deny Allow from all < /directory>
請耐住性子去設, 另外有個部份是投影片沒提到的, 如果你到最後openca_rc啟動之後, 進入web管理介面跳出說密碼長度過短之類的訊息, 請在設定每個CGI目錄都加一個 SSLOptions +StdEnvVars 的設定, 例:
<directory>
SSLOptions +StdEnvVars AllowOverride None Options ExecCGI Order allow,deny Allow from all < /directory>
至於LDAP的部份,這邊的記錄只有到把service帶起來而已,詳細設定請參考相關文件
安裝OpenLDAP 啟動OpenLDAP
su root -c /usr/local/libexec/slapd
重新啟動apache,可以嘗試連線到http://localhost/ca (一共要測ca, ca-node, ra, ra-node,pub看看有沒有問題),如果能正常啟動的話就請參考投影片去做初始化的動作了。
引用或轉載請來信告知,懶得告知也請註明原作者為hzhwang,謝謝
隱藏文章的部份