OpenCA调研安装
更新时间:2024-04-10 09:35:01 阅读量: 综合文库 文档下载
- opencascade推荐度:
- 相关推荐
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
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
cmd=setLanguage;lang=C;charset=UTF-8
cmd=setLanguage;lang=zh_CN;charset=UTF-8
#(蓝色是新添加的)
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
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
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
正在阅读:
OpenCA调研安装04-10
武汉市防洪预案10-28
第二届程序设计大赛题目04-22
时区、区时、地方时和太阳高度角计算04-18
国防教育教育征文02-20
最全电脑黑屏的原因与解决方法(13)10-17
《语言学概论》期末试卷01-10
simpson法求积分01-01
新材料03-14
低防开关整定计算10-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 调研
- 安装
- OpenCA
- 交换路由CCIE之路 - vrf业务隔离
- 小学语文《江雪》教案与评析
- 支教心得体会
- 圆的讲义
- 武汉市集成电路设计行业企业名录2018版106家 - 图文
- 部编版七年级语文上册课时练习《纪念白求恩》
- 云溪小学突发公共卫生事件管理工作制度
- 简述市场失灵与政府干预的必要性
- 双色水位计工作原理
- 财务管理 王华 课后答案
- 温度自动控制毕业设计论文定稿 - 图文
- 安徽省计划生育协会文件
- 西师版三年级数学下册《长方形正方形面积的计算》说课稿
- 东莞职业技术学院包装材料检测实训室设备采购项目
- 国家重点研发计划专项项目申请书模板
- 2017年人教七年级语文上册(带句子)拼音生字词
- 初中英语听力技巧分角度发展探微
- 公司专检报告(导地线) - 图文
- 植保无人机飞防项目可行性研究报告
- 全等三角形的判定2 - 边角边