OpenCA调研安装

更新时间:2024-04-10 09:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

obOpenCA调研和安装手册

Keliu@itechs.iscas.ac.cn 2006-12-12

1. 环境要求

CAS-Earth-Desktop缺省版本 OpenCA要求的版本 Latest version: apache 2.2.3 从apache 2.*之后,mode_ssl就被整合进来了,不需要单独下载、安装。 http://apache.justdn.org/httpd/httpd-2.2.3.tar.gz http://www.php.net/get/php-5.2.0.tar.gz/from/a/mirror http://www.apache.org/dist/perl OpenSSL OpenSSL 0.9.7e-p1 最低要求OpenSSL-0.9.7+ 推荐使用OpenSSL-0.9.8来支持UTF8 http://www.openssl.org/source OpenLDAP 没有 Latest version:2.3.30 http://www.freebsd.org/cgi/ports.cgi?query=openldap http://www.openldap.org/software/download/ Perl Perl v5.8.7 5.8+ with DBM or DBI support Latest version: 5.8.8 http://www.perl.com/download.csp OpenCA 没有 Latest openca-0.9.2.5 http://pki.openca.org/projects/openca/downloads.shtml Database 没有 #灰色表示:不是必需的。

Apache & mod_ssl version: MySQL 4.1.15 (or BerkeleyDatabase or DB2)

事实上,下面的安装过程是采用FreeBSD的Ports做的,图省心,所以本节的各软件版本未必是最终采用的,仅供参考。

2. 软件环境安装过程

首先需要说明是:该部分涉及到的所有内容,都是在CAS-Earth-Desktop(系统安装盘:CAS-earth-desktop-CURRENT-4.1_0712.iso)环境上进行的。

安装过程中需要的软件,基本上都是从135上下载的。如果不知道该下载哪些文件,可以使用下面操作来查询:

cd /usr/ports/XXX

make all-depends-list #显示所有相关的套件

make pretty-print-build-depends-list #显示编译期间所需要的套件

make pretty-print-run-depends-list #显示此套件要执行时所需要的套件

如果你想使用更新的Ports,可以使用下面的操作来完成: cd /usr/share/examples/cvsup/

/usr/local/bin/cvsup -g -L2 -h ftp.freebsdchina.org ports-supfile 注意:如果不是全部更新,可以修改ports-supfile指定。 同样可以更新stable-supfile和standard-supfile 下面的操作和安装过程都是使用缺省的ports,没有进行更新。

2.1. 安装mysql

相关的软件包:

mysql-client-5.0.18 mysql-server-5.0.18 libtool-1.5.22_1

Ports安装命令:

cd /usr/ports/databases/mysql50-server make\\

WITH_CHARSET=gbk\\

#简体中文

WITH_XCHARSET=all\\ #支持其他编码

WITH_LINUXTHREADS=yes\\ #使用Linux线程 SKIP_DNS_CHECK=yes\\ BUILD_OPTIMIZED=yes 冲突

make install clean

等价于:

Make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_LINUXTHREADS=yes SKIP_DNS_CHECK=yes BUILD_OPTIMIZED=yes WITH_OPENSSL=yes install clean

注意:

1) 如果已经安装过了,需要先使用make deinstall卸载一下,否则不能会提示Error: mysql-server… already installed 2) Mysql最好在php之前安装(如果需要),配置相对会容易些;对于mysql和apache

的先后,倒关系不大。

3) Make install后mysql:mysql都已经添加了

#跳过IP检查

#加快编译速度,同WITH_OPENSSL=yes编译选项向

4) Ls –l /usr/local/bin/mysqld_safe,mysql应该具有对该文件的访问权限。

配置过程: cp

/usr/local/share/mysql/my-medium.cnf

/etc/my.cnf

#32M<->64M,适用于apache服务。 mysql_install_db [-u mysql] chown -R mysql /var/db/mysql/ chgrp -R mysql /var/db/mysql/ mysqld_safe --user=mysql & 空

测试方法:

Netstat #可以看到mysql监听于3306上

#建立数据库目录,初始化 #分配权限 #分配权限 #启动MYSQL服务

#如果不执行这两句权限,下面一步执行可能会出现文件找不到等报错。

mysqladmin -u root –p password #设置ROOT的MYSQL密码,缺省为

mysql -u root -p mysql #输入密码可以登陆

注意:

启动mysqld的时候之所以指定mysql用户,是因为:可以避免权限问题,如果使用不能访问mysql相关目录和文件的帐号,可能会提示一些文件not found,这只是权限访问问题。可能的解决方法:

修改文件属主,增加访问权限;或者注释掉/etc/my.cnf中不需要的选项就可以了。

我遇到的一个问题是:mysql-bin.index not found,

使用chown –R mysql /var/db/mysql/mysql*或者注释掉/etc/my.cnf中的log-bin选项,都可以解决这个问题。

如果使用自动启动,请执行下面的操作:

vi /etc/rc.d/mysql-server.sh #添加内容如下 #!/usr/local/bin/bash # made by llzqq # 02/08/ 2004 # mysql startup scripts

case \

start)

if [ -x /usr/local/bin/mysqld_safe ]; then /usr/local/bin/mysqld_safe & fi ;;

stop)

pkill mysqld &

rm -f /var/run/mysql/mysql.sock &

;; *)

echo \ ;; esac

exit 0

chmod 555 /etc/rc.d/mysql-server.sh

vi /etc/rc.local #内容如下

if [ -f /etc/my.cnf ]; then . /etc/rc.d/mysql-server.sh start fi

2.2. 安装apache

相关的软件包:

perl5.8.7 #已经安装

apache22/httpd-2.2.0.tar.bz2. apache22/apr_dbd_mysql.c. autoconf-2.59.tar.bz2 help2man-1.36.3.tar.gz gettext-1.0.5.tar.gz

Ports安装命令:

cd /usr/ports/www/apache22 make install clean 注意:

Apache2.*后已经集成了mod_ssl,不需要单独安装了。

或者使用带参数的编译,如:make WITH_AUTH_MODULES=yes WITH_SSL_MODULES=yes WITH_BERKELEYDB=db4 install clean 如果冲突,加上:FORCE_PKG_REGISTER=yes

配置过程:

vi /usr/local/etc/apache/httpd.conf

#更改ServerName 為你的主機名或IP

vi /etc/rc.conf

#apache2_enable=\#测试过,不好使,虽然多数资料使用这个参数 apache22_enable=\本服务器版本Apache22,我认为应该用这个。

启动方式:

下面三种方法都可以,前两种是立即启动的,最后一种是重启自动启动用的 1)/usr/local/etc/rc.d/apache22.sh start 2)/usr/local/sbin/apachectl start

#也有人使用 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/httpd.conf 的,区别和作用目前未知。其操作语法

/usr/local/sbin/apachectl

-k

start|restart|graceful|graceful-stop|stop

#或者rehash;apachectl [–k] start #-k不要好像也可以,区别待查 3)echo ‘apache22_enable =”YES”‘ >> /etc/ rc.conf #重启后自动启动

测试是否已经启动的是方式:

#lynx localhost ,应该可以看到apache22的welcome页面了:It works!。

注意事项:

如果/usr/local/sbin/apachectl start,遇到下面错误:

[Thu Nov 30 15:44:41 2006] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

可以:grep accf /boot/defaults/loader.conf检查一下FreeBSD是否加载了HTTP Accept Filter FreeBSD kernel module (accf_http),如果显示:

[Earth-Cain] ~# grep accf /boot/defaults/loader.conf accf_data_load=\accf_http_load=\可以在/boot/loader.conf中添加:accf_http_load=”YES”来让下次重启时加载该模块;当前使用kldload accf_http来立即加载该模块。

MOD_SSL配置方法:

cd /$apache-source-code

make certificate #有文献说执行这条命令,但是Ports上不好使 所以,我手动生成了证书,操作过程如下:

首先,我查看SSL配置文件里面的需求,确定证书的位置:

vi /usr/local/etc/apache22/extra/httpd-ssl.conf

# Server Certificate:

SSLCertificateFile /usr/local/etc/apache22/server.crt #SSLCertificateFile /usr/local/etc/apache22/server-dsa.crt # Server Private Key:

SSLCertificateKeyFile /usr/local/etc/apache22/server.key

#SSLCertificateKeyFile /usr/local/etc/apache22/server-dsa.key

然后生成这些证书,生成过程如下: cd /usr/local/etc/apache22

\错误,那是因为OpenLDAP-server选择的是SASL支持的,那么OpenLDAP-client也要选择安装SASL支持。

3. OpenCA安装过程

前面已经安装了OpenCA所需要的基本软件环境,下面根据OpenCA的官方网站http://openca.ru上面的FreeBSD上面的安装过程尝试搭建OpenCA环境。

3.1. 安装之前更新FreeBSD的软件包

更新Ports版本:

cd /usr/share/examples/cvsup/ /usr/local/bin/cvsup -g -L2 -h ftp.freebsdchina.org ports-supfile

注意:如果不是全部更新,可以修改ports-supfile来指定。 vi ports-supfile

ports-all #原来前面有*,去掉;这是全部更新;如果不全部更新,注释掉这行,在后面的子项目上选择(去掉前面的#就行了).

升级OpenSSL到0.9.8版本:

FreeBSD-6.0-stable 缺省安装

OpenSSL-0.9.7e ,被称为

\但是如果想在OpenCA中支持UTF-8,必需安装OpenSSL-0.9.8 被FreeBSD称为\。方法有两种,这里推荐使用第二种。

第一种是:使用ports vi /etc/rc.conf:

WITH_OPENSSL_PORT=\

WITH_OPENSSL_BETA=\# Install OpenSSL-0.9.8 from ports: cd /var/db/pkg

pkg_delete -f openssl* cd /usr/ports/security/openssl make install clean

另外一种是:使用portupgrade

portupgrade -NrR openssl-0.9.8d #openssl升级到0.9.8d #portupgrade -NrR perl-5.8.8 #上一句会自动升级Perl到5.8.8 如果安装perl-5.8.8时,出现报错:\cannot find -ldb\,(事实上,如果从/usr/ports/lang/perl5.8里面make reinstall,也会报相同的错误)。解决方法是:

cd /usr/local/lib

ln -fs libdb-4.3.so libdb.so #如果安装了db43

该方法测试通过(两个小时的努力,汗~,其实在前面BDB的时候已经提到了)。

注意:

1) 建议先升级一下这一部分的Ports,比如:使用cvsup(方法前面已经说过了)。 2) 如果你想命令行里面使用新版本,先进行一下测试,测试方法是: /usr/local/bin/openssl version

OpenSSL 0.9.8d 28 Sep 2006 /usr/bin/openssl version

OpenSSL 0.9.7e-p1 25 Oct 2004 which openssl

/bin/openssl #好像有时候是/usr/bin/openssl,不是缺省的设置

想来你已经明白了版本的区别;你可以使用

ln -s /usr/local/bin/openssl /bin/openssl /usr/local# /bin/openssl version OpenSSL 0.9.8d 28 Sep 2006

来让新版本的OpenSSL在Shell里面生效;不过这些对OpenCA意义不大,因为OpenCA编译的时候,可以使用--with-openssl-prefix=/usr/local来指定版本。

更新相关的软件环境版本:

先安装portupgrade:

cd /usr/ports/sysutils/portupgrade make reinstall clean rehash

然后更新软件包(需要花些时间和带宽): Pkgdb –F #估计

portupgrade -NrR \\ shells/bash \\

shells/bash-completion \\ sysutils/coreutils \\ devel/gmake \\

devel/autoconf259 \\ security/p5-Authen-SASL \\ www/p5-CGI-Session \\

converters/p5-MIME-Base64 \\ converters/p5-Convert-ASN1 \\ security/p5-Digest-HMAC \\ security/p5-Digest-MD5 \\ security/p5-Digest-SHA1 \\ devel/p5-Locale-libintl \\ security/p5-IO-Socket-SSL \\ devel/p5-IO-stringy \\ mail/p5-MIME-Lite \\ mail/p5-MIME-Tools \\

mail/p5-Mail-Tools \\

net/p5-Net-Server \\ net/p5-URI \\

net/p5-perl-ldap \\

devel/p5-Parse-RecDescent \\ net/p5-X500-DN \\

textproc/p5-XML-Twig

如果已经安装过OpenCA,还需要删除原来的环境: cd /var/db/pkg pkg_delete -f bsdpan-OpenCA-* 注意:

1)

如果上次安装OpenCA时没有使用--disable-external-modules选项,并且使用了gmake -e -k distclean,就会对perl相关的部分造成破坏;需要cd /var/db/pkg; portupgrade -frR p5-*进行恢复。

2) 3)

使用gmake来代替make,后者容易编译失败

缺省的XML环境的XML-Parser有比较大的Bug,所以升级安装p5-XML-Twig的时候,需要先安装XML-SAX-Expat ,方法是:cd /usr/ports/textproc/p5-XML-SAX-Expat;make install。

接着,添加用户openca和用户组openca: pw group add openca

pw useradd openca -g openca -s /usr/sbin/nologin 使用gmake和ginstall减少错误:

MAKE=\MAKE=\#不做也行,如果使用官方提供的安装脚本的话 并配置perldoc(参见man perldoc)

#似乎是OpenCA-0.9.2.5/docs/test中执行make需要?

自此,完成整个环境的搭建。

3.2. 界面本地化(汉化)

首先,下载openca的zh_CN语言包:

http://ca.sdg.grid.cn/download/openca-language-zh_CN.zip 或者从 http://sourceforge.net/projects/openca-cn/ 下openca-0.9.2.5-zh_CN-0.1.zip,两个是一样内容的文件。

然后,解压缩,得到zh_CN目录,请根据下面的操作将该目录里面的文件填到源代码的各个目录:

1) 解压缩文件包

cd $OPENCA-SOURCE-CODE-DIR #后面的操作的PWD都是这个路径

tar zxvf openca-0.9.2.5-zh_CN-0.1.zip #可以看到zh_CN目录 2)

Perl所使用字符串的汉化

mkdir src/common/lib/locale/zh_CN

cp zh_CN/openca.po src/common/lib/locale/zh_CN/openca.po msgfmt src/common/lib/locale/zh_CN/openca.po -o

src/common/lib/locale/zh_CN/openca.mo 3) Javascripte所使用的字符串汉化

mkdir src/common/lib/javascript/zh_CN/

cp zh_CN/$FILE src/common/lib/javascript/zh_CN/

#$FILE包括:

ieCSR.vbs ieEnroll.js signForm.js signForm.vbs

4)

Mails所使用的字符串汉化

mkdir src/common/lib/mails/zh_CN/

cp zh_CN/$FILE src/common/lib/javascript/zh_CN/

#$FILE包括:

certsMail.msg

expiringMail.msg secure_pin_mail.msg

confirm_cert_sign.msg request_pin_mail.msg

5) 激活汉化文件

Vi Makefile.global-vars.in

TRANSLATIONS = zh_CN de_DE el_GR en_GB es_ES fr_FR it_IT ja_JP pl_PL sl_SI ru_RU #(蓝色是新添加的)

Vi src/common/etc/menu.xml.template

Language 100

Default

cmd=setLanguage;lang=C;charset=UTF-8 top

zh_CN

cmd=setLanguage;lang=zh_CN;charset=UTF-8 top

#(蓝色是新添加的)

Vi src/common/lib/locale/pot/Makefile

TRANSLATIONS = zh_CN de_DE el_GR en_GB es_ES fr_FR it_IT

ja_JP pl_PL sl_SI ru_RU

#(蓝色是新添加的)

Vi src/common/lib/functions/initServer

## supported languages so far %supportedLanguages = (

C => { LANG => 'C', CHARSET => 'utf-8'}, zh => { LANG => 'zh_CN', CHARSET => 'utf-8'}, de => { LANG => 'de_DE', CHARSET => 'utf-8'},

6)

#(蓝色是新添加的)

完成基于网络中心的汉化包的汉化准备,这里补充一些注意事项。 如果自己汉化,跟上面使用网络中心的汉化包的区别是:

首先,把

src/common/lib/$SRC/C/目录下的文件,复制到

src/common/lib/$SRC/zh_CN/ 目录下;这里$SRC指:Perl、Javascript、Mails。

然后,把src/common/lib/$SRC/zh_CN/ 目录下的各个文件内的字符串翻译成中文;这里$SRC指:Perl、Javascript、Mails。注意使用UTF-8编码。 其他的部分都基本一致。 如果添加自家的标记,可以编辑HTML.pm:

cd $OPENCA-SOURCE-CODE-DIR find ./ -name \

./src/modules/openca-ui-html/blib/lib/OpenCA/UI/HTML.pm ./src/modules/openca-ui-html/HTML.pm

这两个文件是没有区别的,你可以使用diff命令进行验证。方法如下:diff -a src/modules/openca-ui-html/blib/lib/OpenCA/UI/HTML.pm src/modules/openca-ui-html/HTML.pm #没有输出

修改其中一个,然后复制并覆盖另外一个就可以了。

安装完毕后,该文件是

$OPENCA-RA-or-CA-DIR/modules/perl5/OpenCA/UI/HTML.pm

使用同样的命令,你可以发现两个文件也是完全相同的,而且跟源代码包里面的文件也是一样的。这意味着对于一个已经安装了OpenCA并且在运行中的服务,可以修改其中一个,并覆盖另外一个就可以实现动态的更新该页面了;当然了,重新启动服务是免不了的。(文件对比方法是:diff -a /usr/local/openca/ca/modules/perl5/OpenCA/UI/HTML.pm /usr/local/openca/ra/modules/perl5/OpenCA/UI/HTML.pm)

具体怎么修改,根据自己需要进行定制吧。

3.3. 安装注册中心RA

安装过程,首先配置RA的安装细节: 1) Cd $OPENCA-SOURCE-CODE-DIR 2) 安装RA:

a) ./my-conf-ra.sh

b) ./my-make-ra.sh

a)的大致内容操作如下(细节请参见my-conf-ra.sh): D=\

MAKE=\export MAKE

#INSTALL=\INSTALL=\export INSTALL

rm -rf ${D}

gmake -e -k distclean

./configure \\

--prefix=${D} \\

--with-openca-user=openca \\ --with-openca-group=openca \\ --with-httpd-user=www \\ --with-httpd-group=www \\ --with-openca-prefix=${D} \\

--with-etc-prefix=${D}/etc \\

--with-httpd-fs-prefix=${D}/apache \\ --with-module-prefix=${D}/modules \\ --with-node-prefix=ra-node \\ --with-web-host=localhost \\ --enable-dbi \\

--enable-rbac \\

--with-openssl-prefix=/usr/local \\ --disable-external-modules \\

b)的大致内容操作如下(细节请参见my-make-ra.sh): gmake -e

gmake -e install-online

最后,对RA进行运行环境配置 cd /usr/local/ra/etc/ vi config.xml #进行一系列的修改

vi log.xml #修改sys_syslog部分的sys_syslog的等级为ERR

sys_syslog *

ERR #修改部分

Syslog Sys

OpenCA PKI Log Message local6

unix

cd /usr/local/ra/etc/access_control #里面有一大XML文件可以配置,修改细节暂略过

/usr/local/ra/etc/configure_etc.sh #配置文件修改好了,让这些配置生效

#然后,重新启动RA就可以了

注意: 7) 因为脚本需要export命令,而export命令是bash的,缺省的tcsh不支

持,所以想在运行脚本之前,自己执行export,需要做些操作来修改当前用户

使用的shell,直接输入bash就可以了;如果想永久修改,可以用:

8) 9) 10)

pw usermod -n root -s /usr/local/bin/bash

如果之前没有安装过OpenCA,第一运行gmake -e -k distclean会报一堆的错误,但是不影响后面的./configure命令,可以不用理睬。 关于—enable-dbi这个参数,可以根据安装的DB进行调整,反正我都安装了,所以我暂时没有遇到问题。

关于配置的细节,将会在完全测试完毕后,再张贴到对应的位置。

3.4. 安装认证中心CA

安装方式如RA:

1) 安装CA:

c) ./my-conf-ca.sh

d) ./my-make-ca.sh

如果把这些操作展开,基本上类似下面的操作(详情见my-conf-ca.sh) 安装过程,首先配置CA的安装细节: D=\

MAKE=\export MAKE

INSTALL=\

export INSTALL

gmake -e -k distclean

./configure \\

--prefix=${D} \\

--with-openca-user=openca \\ --with-openca-group=openca \\ --with-httpd-user=www \\ --with-httpd-group=www \\ --with-openca-prefix=${D} \\ --with-etc-prefix=${D}/etc \\

--with-httpd-fs-prefix=${D}/apache \\ --with-module-prefix=${D}/modules \\ --with-node-prefix=ca-node \\ --with-web-host=localhost \\

--enable-dbi \\ --enable-rbac \\

--with-openssl-prefix=/usr/local \\ --disable-external-modules \\

然后正式安装CA: gmake -e

gmake -e install-offline

最后,对CA进行运行环境配置 cd /usr/local/ca/etc/ vi config.xml #进行一系列的修改

vi log.xml #修改sys_syslog部分的sys_syslog的等级为ERR

sys_syslog *

ERR #修改部分 Syslog Sys

OpenCA PKI Log Message local6

unix

cd /usr/local/ca/etc/access_control

#里面有一大XML文件可以配置,修改细节暂略过

/usr/local/ca/etc/configure_etc.sh #配置文件修改好了,让这些配置生效

#然后,重新启动CA就可以了

注意:

也许,你已经发现:两部分的安装内容差别很小,除了路径的差别外,就是安装时候是install-offline还是install-online了。

3.5. 配置Apache页面

vi /usr/local/etc/apache22/httpd.conf #设置CA和RA的路径

Alias /ca \

Alias /ca-node \

ScriptAlias /cgi-bin/ca/ \ ScriptAlias /cgi-bin/ca-node/ \

# OpenCA Mods

# RA Aliases

Alias /ra \ Alias /pub \ Alias /ldap \ Alias /ra-node \

ScriptAlias /cgi-bin/ra \ ScriptAlias /cgi-bin/pub \ ScriptAlias /cgi-bin/ldap \ ScriptAlias /cgi-bin/ra-node/ \ …

# OpenCA Mods

Order allow,deny

Allow from all

Options FollowSymLinks Indexes Order allow,deny Allow from all

Options FollowSymLinks Indexes Order allow,deny Allow from all

# OpenCA Mods

# adding dir to symlinks following for cert retrieval

# not totally clear WHY openca puts a symlink here, but it did.

Options FollowSymLinks Indexes Order allow,deny Allow from all

显然,上面的方法主要是对HTTP有效,直接运行OpenCA肯定是不够的,因为后者需要HTTPS支持。如果不想采用https,可以关掉OpenCA里面各配置XML文件中的Protocol和Port,修改为http或者.*,端口修改为80。相关的内容,参见附带的配置包。

3.6. 配置RA和CA

参数比较多,详细的配置都是用脚本,可以在文中和附带包中找到。大致流程如下:

2) 确信已经采用3.1的方法进行了软件环境升级安装

3) Cd $OPENCA-SOURCE-CODE-DIR 4) 安装RA:

e) ./my-conf-ra.sh f) ./my-make-ra.sh 5) 安装CA:

g) ./my-conf-ca.sh h) ./my-make-ca.sh

6) 配置RA:

i) Cd /usr/local/openca/ra/etc

j) 对config.xml等配置文件进行修改 k) ./configure_etc.sh

l) ./openca_rc start启动RA服务 7) 配置CA:

m) Cd /usr/local/openca/ra/etc

n) 对config.xml等配置文件进行修改 o) ./configure_etc.sh

p) ./openca_rc start启动RA服务

8) 5)和6)中需要的XML配置操作,可以参见附件包中的配置案例,细节太多,不在

细说。 9) 更改缺省口令的办法:

/usr/local/openca/ra/bin/openca-digest sha1 'earthserver' #举例子 Digest: SHA1

String: earthserver

SHA1: OB4Hws7stvLijMlQzIXFYWCi8w4

把这个Hash替换到各个配置文件里面去(被包括的)即可。在

本手册的其他各个部分,都暂时使用缺省密码(root和它的Hash值)。

下面对张贴了前四个脚本的内容,是参考OpenCA/…/configs中多个configure文件编写的: My-conf-ra.sh #!/bin/sh # (C) 2006 by Kuien Liu # for Earth project. # 05.12.2006

D=\

MAKE=\export MAKE

# You better use \

#INSTALL=\

INSTALL=\export INSTALL

gmake -e -k distclean rm -rf ${D}

./configure \\

--prefix=${D} \\

--with-openca-user=openca \\ --with-openca-group=openca \\ --with-httpd-user=www \\ --with-httpd-group=www \\ --with-openca-prefix=${D} \\ --with-etc-prefix=${D}/etc \\

--with-httpd-fs-prefix=${D}/httpd \\ --with-module-prefix=${D}/modules \\ --with-openssl-prefix=/usr/local \\ --with-node-prefix=ra-node \\ --with-web-host=localhost \\ --enable-db \\ --disable-dbi \\

--disable-rbac \\

--disable-external-modules \\ --with-ca-organization=\ --with-ca-country=\ --with-ca-locality=\ --with-ldap-port=389 \\

--with-ldap-root=\ --with-ldap-root-pwd=\ --enable-update-ldap-automatic \\

--with-service-mail-account=\ --with-language=zh_CN \\ --with-hierarchy-level=ra

#--with-engine=no \\

#--with-ldap-host=192.168.1.223 \\ #--enable-package-build \\

#--enable-send-mail-automatic \\

#--with-sendmail=/usr/sbin/sendmail \\

My-make-ra.sh #!/bin/sh # (C) 2006 by Kuien Liu # for Earth project.

# 05.12.2006

gmake -e install-online

My-conf-ca.sh

#!/bin/sh

# (C) 2006 by Kuien Liu # for Earth project. # 05.12.2006

D=\

MAKE=\export MAKE

# You better use \

#INSTALL=\INSTALL=\export INSTALL

gmake -e -k distclean #rm -rf ${D}

./configure \\

--prefix=${D} \\

--with-openca-user=openca \\ --with-openca-group=openca \\ --with-httpd-user=www \\ --with-httpd-group=www \\ --with-openca-prefix=${D} \\ --with-etc-prefix=${D}/etc \\

--with-httpd-fs-prefix=${D}/httpd \\ --with-module-prefix=${D}/modules \\ --with-openssl-prefix=/usr/local \\ --with-node-prefix=ca-node \\ --with-web-host=localhost \\ --enable-db \\ --disable-dbi \\

--disable-rbac \\

--disable-external-modules \\ --with-ca-organization=\ --with-ca-country=\

--with-ca-locality=\

--with-ldap-port=389 \\

--with-ldap-root=\ --with-ldap-root-pwd=\ --enable-update-ldap-automatic \\

--with-service-mail-account=\ --with-language=zh_CN \\ --with-hierarchy-level=ca

#--with-engine=no \\

#--with-ldap-host=192.168.1.223 \\ #--enable-package-build \\ #--enable-send-mail-automatic \\ #--with-sendmail=/usr/sbin/sendmail \\

My-make-ca.sh #!/bin/sh # (C) 2006 by Kuien Liu # for Earth project. # 05.12.2006

gmake -e install-offline

3.7. 启动和测试

前面都配置好了后,启动服务: 手动启动CA:

#启动RA和CA

/usr/local/openca/ra/etc/openca_start /usr/local/openca/ca/etc/openca_start

或者使用我编写的脚本:My-run-all.sh。 My-run-all.sh #!/bin/sh

# (C) 2006 by Kuien Liu # for Earth project.

# 05.12.2006

echo -n Stopping RA ...

PID=`cat /usr/local/openca/ra/var/tmp/xml_cache.pid 2>/dev/null`; [ -n \PID=`cat

/usr/local/openca/ra/var/tmp/openca_socket.pid

2>/dev/null`;

[ -n \echo OK

echo -n Stopping CA ...

PID=`cat /usr/local/openca/ca/var/tmp/xml_cache.pid 2>/dev/null`; [ -n \PID=`cat /usr/local/openca/ca/var/tmp/openca_socket.pid 2>/dev/null`;

[ -n \echo OK

echo -n Starting RA ...

ra_start=/usr/local/openca/ca/etc/openca_start ca_start=/usr/local/openca/ra/etc/openca_start

if $ra_start; then echo OK; else

echo FAILED;

fi

echo -n Starting CA ... if $ca_start; then echo OK;

else

echo FAILED; fi

echo -n All should be OK now! -n

自动启动方法:

cp My-run-all.sh /usr/local/etc/rc.d/openca chmod 0755 /usr/local/etc/rc.d/openca

#重新启动Apache

/usr/local/sbin/apachectl restart

启动保持:不断监测,以保证服务不间断(该方法未测试) Wget http://openca.ru/demo/start.tgz #解压缩后拷贝到/usr/local/etc/rc.d/目录

cat /etc/crontab |grep -2 atrun#应该看到下面这一行;如果没有,就添加上 #minute hour mday month wday who command #

*/5 * * * * root /usr/libexec/atrun #

# Save some entropy so that /dev/random can re-seed on boot.

#测试Web服务

https://192.168.1.223/ca 可以看到CA登陆界面:如下

还应该可以看到的页面有RA,PUB,LDAP等,缺省口令/密码:root/root。

注意:

如果操作时候遇到XML::Twig错误,不要奇怪,这是一个常见错误;可能得问题是: 1) XML cache是否启动了 2) 访问权限问题

3) 模块重复安装

4) 否则,就重新安装XML::Twig

检测方法是:find / -name Twig.pm –print

可能得到:/usr/local/lib/perl5/site_perl/5.8.8/XML/Twig.pm

4. OpenCA初始化和管理

等完全测试通过了,补充这一部分的内容。

4.1. 获得OpenCA的文档

生成openca-guide.pdf和openca-guide.html Cd $OPENCA/docs Make

在$OPENCA/docs/guide和$OPENCA/docs/howto里面可以找到所相关的文档。特别是dartmouth.txt是适用于FreeBSD的CA和RA共存的文档,强烈推荐。

还有一份可以参考的文献,那就是中科院网络中心的“科学数据网格-CA 系统用户管

理手册 v2.0”,网上可以下载到。

4.2. CA初始化

登陆

https://192.168.1.223/ca,输入root/root(缺省密码)登陆

初始化

https://192.168.1.223/caGeneral->Initializtion进入OpenCA Init页

面,里面有三个阶段,下面介绍过程。

1. Initalize Phase I: Initialize the Certification Authority

点击Initialize the Certification Authority,可以看到:

第一步,点击Initialize Database,可以看到

The database was successfully initialized.

表示初始化成功。

第二步,点击Generate new CA secret key,可以看到

根据自己需要进行选择,CA Key Size可以选择最大为4096。点击OK,然后输入不少于10位的口令(如:earthserver),就可以看到刚生成的CA Key了。

该证书保存为/usr/local/openca/ca/var/crypto/keys/cakey.pem。

第三步,点击Generate new CA Certificate Request,可以看到输入项

根据需要进行填写,Organization Unit Name可以略过。点击OK,看到

如果不再修改,点击OK,输入刚才设置的口令(如:earthserver),就生成了证书请求存在/usr/local/openca/ca/var/crypto/reqs/careq.pem中。

第四步,点击Self Signed CA Certificate,输入有效天数(缺省730天),点击OK,输入刚才设置的口令(如:earthserver),就生成了自签署证书。

证书存在/usr/local/openca/ca/var/crypto/cacerts/cacert.crt中。

第五步,Export CA Certificate Request和Import CA certificate暂时略过。首次初始化阶段暂时用不到。

第六步,点击Rebuild CA Chain,看到CA Certificates chain successfully rebuilt.则成功。

至此,第一阶段的初始化证书认证部分结束。

2. Initalize Phase II: Create the initial administrator

证书请求。

创建第一个用户的PKI,这个用户将成为管理员。该过程暂时可以不做,在测试阶段,管理员的可信性暂时可以不考虑(正在配置的人不就是管理员嘛,没有这个之前,就已经在配置了,^_^)。

下面仍然把过程写一下,最后会生成证书,可以保存到本地,导入到浏览器里面: 第一步,点击Create a new request,可以看到

根据需要填写相关内容,我填写的例子:

记住输入的口令(如:earthserver);可以看到输入信息的确认页面

点击“Print”可以打印一张保存下来。不过不用着急,点击Edit the request进行一些修改,然后通过Issue the certificate,输入口令生成证书,然后Handle the certificate中下载所需要格式的证书,可以导入到本地浏览器,该证书是被前面生成的cacert.crt(连接到cacer.pem)签署的。

3. Initalize Phase III: Create the initial RA certificate

因为整个过程等同于前面的操作,区别在于证书的Name和Role不同,别的几乎完全一样,所以操作过程这里略过。

生成的相关证书,可以在附件包中找到。

4.3. RA初始化

RA(Register Authority)是证书的注册中心,负责核查用户证书申请,与用户、CA交换数据。由RA管理员操作,主要有三部分: ", RA管理:主要是处理用户的请求;https://192.168.1.223/ra

", RA服务器管理:管理和维护RA服务器,与CA交换数据;https://192.168.1.223/ra-node

", LDAP管理:管理存储在LDAP中的证书;https://192.168.1.223/ldap 这里首先介绍RA初始化工作,主要工作是在CA-Node和RA-Node之间通过Exchange交换数据。

1) 在CA和RA之间同步配置信息

登陆https://192.168.1.223/ca-node ,输入root/root(缺省密码)登陆;点击Administration->Dataexchange->Enroll data to a lower level of the hierarchy,将把ALL的数据输出到/usr/local/openca/ca/var/tmp/ ca-down.tar(这是写在$CA/etc/config.xml最后一段的地址)。

登陆https://192.168.1.223/ra-node ,输入root/root(缺省密码)登陆;点击Administration,可以看到Server Init 项,如下图:

分别点击:

先初始化数据库:Admin->Server Init, initialize DB

然后下载配置数据:Admin->Server Init, Import Configuration将读取文件/usr/local/openca/ca/var/tmp/ ca-down.tar(这是写在$RA/etc/config.xml最后一段的地址,RA-Up指向CA-Down,同一台机器的好处,^_^)。

注意:有文献提到不进行Admin->Server Init, Import Configuration,而是。

上面的加载证书失败,属于正确的状态,不用在意。

2) 在CA和RA之间同步所有信息

登陆https://192.168.1.223/ca-node ,输入root/root(缺省密码)登陆;点击Administration->Dataexchange->Enroll data to a lower level of the hierarchy,将把ALL的数据输出到/usr/local/openca/ca/var/tmp/ ca-down.tar(这是写在$CA/etc/config.xml最后一段的地址)。

登陆https://192.168.1.223/ra-node ,输入root/root(缺省密码)登陆;点击Administration->Dataexchange, Download data from a higher level of the hierarchy,将从文件/usr/local/openca/ca/var/tmp/ ca-down.tar读入ALL数据。

4.4. 申请一个证书

1) PUB上提交证书申请

登陆https://192.168.1.223/pub,没有口令,选择User->Request a Certificate->Request a certificate with automatic browserdetection

输入必需的内容(内容跟生成RA-ADMIN和CA-ADMIN的证书过程类似,不再重复),但是要记住your request with the serial ***(取证书时候的编号)。

2) RA上提交证书申请

登陆https://192.168.1.223/ra ,输入RA口令(比如root/root),Active CSRs->New->(search),就可以看到刚才提交的申请。

点击serial number(带颜色的),(Approve Request without signing),RA-Node才可以提交。

3) RA-node上传证书申请

登陆https://192.168.1.223/ra-node ,输入RA-Node口令(比如root/root),Admin->dataexchange->Upload data to a higher level of the hierarchy ->requests,上传到CA上去。

4) CA-node读取证书申请

登陆https://192.168.1.223/ca-node ,输入CA-Node口令(比如root/root),Admin->dataexchange->Receive data from a lower level of the hierarchy ->requests,读取RA的证书请求

5) CA签署证书

登陆https://192.168.1.223/ca ,输入CA口令(比如root/root) Usual Operations->Approved Certificate Requests -> 选择刚才的那个serial number,签署证书

6) CA-node下传证书

登陆https://192.168.1.223/ca-node ,输入CA-Node口令(比如root/root),Admin->dataexchange->Enroll data to a lower level of the hierarchy ->Certificates,下传证书

7) RA-node接收证书

登陆https://192.168.1.223/ra-node ,输入RA-Node口令(比如root/root),Admin->dataexchange->Download data from a higher level of the hierarchy ->Certificates,接受证书

8) 个人领取证书

登陆https://192.168.1.223/pub,没有口令,User->Get Requested Certificate,输入serial number,就可以看到已经签署好的证书了。可以选择下载也可以安装证书。

如果配置了sendmail,并且设置为自动发送邮件,申请人可以从注册信箱里面拿到签发后的证书。管理员也可以通过系统手动的发送邮件。

4.5. 撤销一个证书

1) PUB上提交证书撤销申请

登陆https://192.168.1.223/pub,没有口令,选择

User->Revoke

Certificate,填写证书的Serial Number、撤销理由和颁发证书时候提供的CRIN号;如果是已经存在的有效的证书,则可以进行下一步的登陆提交工作。

2) RA上提交证书撤销申请

登陆https://192.168.1.223/ra ,输入RA口令(比如root/root),Active CRRs->New就可以看到现有的撤销申请。

3) RA-node上传证书撤销申请

登陆https://192.168.1.223/ra-node ,输入RA-Node口令(比如root/root),Admin->Dataexchange->Upload data to a higher level of the hierarchy ->CRRS,上传到CA上去。

4) CA-node读取证书撤销申请

登陆https://192.168.1.223/ca-node ,输入CA-Node口令(比如root/root),Admin->Dataexchange->Receive data from a lower level of the hierarchy ->requests,读取RA的证书撤销请求

5) CA撤销证书

登陆https://192.168.1.223/ca ,输入CA口令(比如root/root)

Usual Operations->Approved Revocation Requests -> 选择刚才的那个serial number,撤销证书

6) CA-node下传撤销证书列表

登陆https://192.168.1.223/ca-node ,输入CA-Node口令(比如root/root),Admin->dataexchange->Enroll data to a lower level of the hierarchy ->CRLs,下传撤销证书

7) RA-node接收撤销证书列表

登陆https://192.168.1.223/ra-node ,输入RA-Node口令(比如root/root),Admin->dataexchange->Download data from a higher level of the hierarchy ->CRLs,接受撤销证书列表

8) 个人领取证书

登陆https://192.168.1.223/pub,没有口令,Certificates->revoked,就可以看到已经撤销的证书列表了。可以从CA Infos-> Certificate Revocation Lists下载列表,并导入本地系统。

5. OpenCA使用手册

5.1. Email证书使用场景

使用证书,对客户端发出的邮件进行签名和加密;另一个接收客户端可以验证和解密邮件,保证端到端传输的可信性。

下面以Mozilla ThunderBird为例,介绍Email客户端使用证书的过程。 1) 导入根证书

登陆https://192.168.1.223/pub,没有口令,选择CA Infos-> Get CA certificate->选择一个适合自己的CA根证书格式,并导入本机。这样,以后从该CA中心申请和下载的证书就可以被信任了。

2) 申请证书

申请证书的方式,请参考前面的4.4节流程。

3) 导入证书

首先,启动Mozilla ThunderBird,选择 菜单栏“工具”->“邮件/新闻帐号设置”

在弹出的“帐号设置”窗口,选择一个帐号,如下图中的:keliu@itechs,选择“安

全”选项。可以看到,提示指定数字签名证书和加密证书的选项。

选中上图中的红色框中的按钮“查看证书”,将弹出 证书管理器,见下图:

选中上图中的红色框中的按钮“导入”

选中你从OpenCA服务器上申请到的证书(要求使用PKCS12证书,也就是那种带有私钥的证书,使用时候必需输入口令)。先输入证书口令,(如果是第一次使用,还要求设置 软件安全证书设备 的口令,见下面右图),完成证书导入工作。

导入成功后,可以看到新添加的证书。

点击确定,然后在“帐号设置”里面的“安全”选项中的“数字签名”和“加密”就可以选择刚才导入的证书了;二者可以是不一样的,但是缺省可以使用同一个证书。

4) 使用证书

下面演示一下如何创建一个加密邮件,并接收他人的邮件。(见下图):

点击上面红色勾出的“安全”字样,弹出菜单上可以选择“加密此消息”和“对此消息数字签名”,可以复选。

点击发送。稍后可以收到刚才发送的带有加密和签名的邮件,见下图。

邮件信息上有两个特殊的标记(由红色框出),点击任何一个,可以看到:

这就保证了邮件的机密性、完整性和不可否认性。 注意:

可能你已经发现,上面是自己给自己发邮件的例子;如果给别人发送加密邮件,必需有对方的公钥才行,也就是说:先收到别人的证书,并导入自己的证书库,才可能给对方发送加密邮件。实现过程是从带有证书的ThunderBird客户端(keliu@itechs)往不使用证书FireFox客户端(guoli@itechs)发送签名邮件:

1) 新建一封邮件,发送给没有对方证书的地址(如:

badmintino@itechs.iscas.ac.cn,本例中使用);发送之前,选择“签

名”,但是不要选择加密(没有对方证书,所以也无法加密;只能签名)。

2)

接收方(guoli@itechs)收到邮件后,可以看到被签名的邮件,并且获得对应的证书。

点击“继续”,可以看到

3)

可以“编辑信任关系”和“查看数字标识”,来查看证书和编辑信任关系。

接收方(guoli@itechs)点击下图中红色方框中的按钮,可以看到

点击“添加到地址簿”按钮来保存发送方(keliu@itechs)的证书。 4)

在接收方回复邮件给(keliu@itechs)的时候,就可以使用加密功能,如下图所示:

5)

接收方(keliu@itechs)稍后就可以收到邮件,因为拥有证书私钥,所以

可以正常解密和阅读。

5.2. Email双向认证使用场景

1) 双向认证

颁发客户端证书和服务器证书,进行基于证书的双向认证。

将证书和Email的虚拟域管理结合起来,该部分工作是下一阶段的研究内容,所以本节暂为空。

6. 参考文献

Fix ports collection of your FreeBSD system before installing OpenCA http://openca.ru/rus/my-README.freebsd.html

apache

http://www.apache.org/dist/httpd

http://www.apache.org/dist/httpd/apache_1.3.37.tar.gz

mysql

http://www.mysql.com/downloads

http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-standard-5.0.27

-freebsd6.0-i386.tar.gz/from/pick

php

http://www.php.net/downloads.php

http://www.php.net/get/php-5.2.0.tar.gz/from/a/mirror

perl

http://www.perl.com/download.csp

mod_perl

http://www.apache.org/dist/perl

http://www.apache.org/dist/perl/mod_perl-2.0.2.tar.gz

mod_ssl

http://www.modssl.org/source

http://www.modssl.org/source/mod_ssl-2.8.28-1.3.37.tar.gz

openssl

http://www.openssl.org/source

openldap

http://www.openldap.org/software/download/

http://www.freebsd.org/cgi/ports.cgi?query=openldap

openca

http://pki.openca.org/projects/openca/downloads.shtml ftp://ftp.openca.org/pub/openca/

Apache 2.2 手册中文版

http://lamp.linux.gov.cn/Apache/ApacheMenu/index.html

SSL/TLS Strong Encryption: FAQ

http://w.yi.org/ftp/FAPM/apache/Apache2/zh/ssl/ssl_faq.html

Fix ports collection of your FreeBSD system before installing OpenCA http://openca.ru/rus/my-README.freebsd.html

OpenCA0.9.2.5的安装 郑依华

http://blog.ntarl.cnic.cn/u/zyhua/archives/2006/166.html

Installing OpenCA on a SINGLE MACHINE

http://solar.murty.net/~murty/files/openca.INSTALL.txt

本文来源:https://www.bwwdw.com/article/zx3r.html

Top