By internat, on 04月 8th, 2011
. . . → Read More: Hello world!
By internat, on 11月 23rd, 2009
出处:Blog.ChinaUnix.net
OSW:7.认证中心
海龙讲PKI时,以算法和体系讲得很细,可是没讲怎么搭建。在一次讲座后去问另一个人,好象也没问出个结果。郝大说他自己搭了个认证服务器,很得意,又见他在研究应用密码学,便猜这东东一定不会容易。想向他打听吧,又怕需要的背景知识太多,只好作罢。
有文说用OpenSSL可以做,过几天试试去。根据文章指点,step by step,:)
目录
----------------------------
用户申请证书
服务方自频证书(只能一次)
服务方频发证书
用户使用证书
-----------------------------
一些假定:我叫aliali,我有一朋友叫boxbox,当前目录是$home/candel。
用户申请证书 top
1、生成私钥
$openssl genrsa -des3 -out aliali.key 1024
显示
Generating RSA private key, 1024 bit long modulus
.......++++++
.++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:
生成名为aliali.key的一个文件,内容如下:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,BB03146A74BE076E
HwsUT6Slujin4b7p7X3KLCxUSRMgK0WVHU1zRJwV+LeQQYOvW4YOvl1w1TJVuwtx
............
I5GbgPGfP7tb0dHKx6SMv/EOQitkx98SpPQlKwGvhimcUqg0QM+UJw==
-----END RSA PRIVATE KEY-----
可以用下面的指令查看私钥内容
$openssl rsa -noout -text -in aliali.key
显示:
read RSA key
Enter PEM pass phrase:
Private-Key: (1024 bit)
modulus:
00:d1:bd:28:78:e7:bb:17:c0:44:97:ec:43:b0:48:
.........
6c:02:6c:35:fc:c0:97:16:eb
publicExponent: 65537 (0x10001)
privateExponent:
22:c1:61:af:87:56:ed:7c:a2:e1:39:f9:8d:80:a9:
..........
06:bd:e4:da:81:39:61:c1
prime1:
00:f9:e4:ca:a5:3a:b2:da:27:69:e0:47:d3:80:e4:
..........
08:ab:3c:fc:33
prime2:
00:d6:dd:2d:a6:99:b6:11:2b:84:76:e1:af:eb:c0:
...........
80:e7:b7:c2:69
exponent1:
00:ef:6a:61:30:5e:85:9e:76:e6:7c:47:b4:7e:a8:
...........
e6:b1:50:d3:7b
exponent2:
00:a5:26:0a:01:a4:e2:09:5e:7e:89:75:bc:e7:23:
...........
63:c7:37:3a:09
coefficient:
00:c7:e0:04:e3:83:d7:9d:aa:55:d4:b2:ae:da:2b:
............
4e:4f:64:f0:d4
用下列命令可生成不需要口令访问的私钥
$openssl rsa -in tom.key -out tom.key.unsecure
显示,不知道,没试。
2、用如上的私钥生成一个证书签名申请(CSR):
$openssl req -new -key aliali.key -out aliali.csr
显示:
Using configuration from /usr/share/ssl/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]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:aliali.com
Organizational Unit Name (eg, section) []:management center of network
Common Name (eg, your name or your server's hostname) []:aliali
Email Address []:hitonyang@yahoo.com.cn
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:alia
An optional company name []:istic
生成文件aliali.csr,内容如下:
-----BEGIN CERTIFICATE REQUEST-----
MIIB/zCCAWgCAQAwgZMxCzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdCZWlqaW5nMRMw
...........
r6djmppuuS5beTZNASdzpC8FSEokg66a9Xgfz4K2joX/gK0=
-----END CERTIFICATE REQUEST-----
用$openssl req -noout -text -in aliali.csr看请求内容,显示如下:
Using configuration from /usr/share/ssl/openssl.cnf
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=CN, ST=Beijing, O=aliali.com, OU=management center of network, CN=aliali/Email=hitonyang@yahoo.com.cn
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:d1:bd:28:78:e7:bb:17:c0:44:97:ec:43:b0:48:
................
6c:02:6c:35:fc:c0:97:16:eb
Exponent: 65537 (0x10001)
Attributes:
challengePassword :alia
unstructuredName :istic
Signature Algorithm: md5WithRSAEncryption
a0:af:9f:9a:6e:48:a9:12:b5:ed:db:3a:8a:ec:ae:8f:cb:48:
.............
80:ad
服务方在发证书需要有自己的key和crt,如果没有则要生成 top
生成服务方的私钥
$ openssl genrsa -des3 -out ca.key 1024
显示
Generating RSA private key, 1024 bit long modulus
.............................................++++++
...++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:
生成CA的x509自签名
$ openssl req -new -x509 -days 365 -key ca.key -out ca.crt
显示
Using configuration from /usr/share/ssl/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]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ISTIC
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:
服务方颁发证书 top
$sign.sh aliali.csr
显示
CA signing: aliali.csr -> aliali.crt:
Using configuration from ca.config
Enter PEM pass phrase:
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName RINTABLE:'CN'
stateOrProvinceName RINTABLE:'Beijing'
organizationName RINTABLE:'aliali.com'
organizationalUnitName RINTABLE:'management center of network'
commonName . . . → Read More: ca证书流程
By internat, on 11月 23rd, 2009
文章出处http://hi.baidu.com/52hack
简要介绍了使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程
1. 首先建立CA密钥:
openssl genrsa -des3 -out ca.key 1024 (创建密钥)
chmod 400 ca.key (修改权限为仅root能访问)
openssl rsa -noout -text -in ca.key (查看创建的证书)
2. 利用CA密钥自签署CA证书:
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
chmod 400 ca.crt (修改权限为仅root能访问)
openssl x509 -noout -text -in ca.crt (查看创建的证书)
3. 创建服务器证书签署申请:
openssl genrsa -des3 -out client.key 1024
chmod 400 server.key (修改权限为仅root能访问)
openssl rsa -noout -text -in client.key (查看创建的证书)
4. 利用证书签署申请生成请求:
openssl req -new -key client.key . . . → Read More: openssl简明使用手册
By internat, on 11月 19th, 2009
OpenVPN配置文件详解
2009-06-24 16:24
Server使用的配置文件server.conf
—————————–
#申明本机使用的IP地址,也可以不说明
;local a.b.c.d
#申明使用的端口,默认1194
port 1194
#申明使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议
;proto tcp
proto udp
#申明使用的设备可选tap和tun,tap是二层设备,支持链路层协议。
#tun是ip层的点对点协议,限制稍微多一些,本人习惯使用TAP设备
dev tap
;dev tun
#OpenVPN使用的ROOT CA,使用build-ca生成的,用于验证客户是证书是否合法
ca ca.crt
#Server使用的证书文件
cert server.crt
#Server使用的证书对应的key,注意文件的权限,防止被盗
key server.key # This file should be kept secret
#CRL文件的申明,被吊销的证书链,这些证书将无法登录
crl-verify vpncrl.pem
#上面提到的生成的Diffie-Hellman文件
dh dh1024.pem
#这是一条命令的合集,如果你是OpenVPN的老用户,就知道这条命令的来由
#这条命令等效于:
# mode server #OpenVPN工作在Server模式,可以支持多client同时动态接入
# tls-server #使用TLS加密传输,本端为Server,Client端为tls-client
#
# if dev tun: #如果使用tun设备,等效于以下配置
# ifconfig 10.8.0.1 10.8.0.2 #设置本地tun设备的地址
# ifconfig-pool 10.8.0.4 10.8.0.251 #说明OpenVPN使用的地址池(用于分配给客户),分别是起始地址、结束地址
# route 10.8.0.0 255.255.255.0 #增加一条静态路由,省略下一跳地址,下一跳为对端地址,这里是: 10.8.0.2
# if client-to-client: #如果使用client-to-client这个选项
# push “route 10.8.0.0 255.255.255.0″ #把这条路由发送给客户端,客户连接成功后自动加入路由表,省略了下一跳地址: 10.8.0.1
# else
# push “route . . . → Read More: OpenVPN配置文件详解
By internat, on 02月 3rd, 2009
EAN码是国际物品编码协会制定的一种商品用条码,通用于全世界。EAN码符号有标准版(EAN-13)和缩短版(EAN-8)两种,我国的通用商品条码与其等效。我们日常购买的商品包装上所印的条码一般就是EAN码。我这里给出的是EAN-13的算法代码,大家如果需要EAN-8条码可以自行修改下。
* 函 数 名:EAN13()
* 功 能:根据条EAN-13码符号字符串生成条码位图
* 参 数:BM 字符型(12位EAN-13码符号字符串 如:'690102818039')
* 返 回 值:生成的条码位图的文件名
* 运行环境:WIN95以上版本。Visual FoxPro 6.0,7.0,8.0,9.0
* 算法制作:行者孙(QQ:310727570)-VFP应用程式算法群(12787940)
* 说 明:转载请保留出处!
Function EAN13(BM As String )
Private BM
Dimension EAN_code[10,3]
EAN_code[1,1]='00000011110011'
EAN_code[1,2]='00110000111111'
EAN_code[1,3]='11111100001100'
EAN_code[2,1]='00001111000011'
EAN_code[2,2]='00111100001111'
EAN_code[2,3]='11110000111100'
EAN_code[3,1]='00001100001111'
EAN_code[3,2]='00001111001111'
EAN_code[3,3]='11110011110000'
EAN_code[4,1]='00111111001100'
EAN_code[4,2]='00001111110011'
EAN_code[4,3]='11000000001100'
EAN_code[5,1]='00110000001111'
EAN_code[5,2]='00001111110011'
EAN_code[5,3]='11001111110000'
EAN_code[6,1]='00111100000011'
EAN_code[6,2]='00111111000011'
EAN_code[6,3]='11000011111100'
EAN_code[7,1]='00110011111111'
EAN_code[7,2]='00000011001111'
EAN_code[7,3]='11001100000000'
EAN_code[8,1]='00111111001111'
EAN_code[8,2]='00001100000011'
EAN_code[8,3]='11000000110000'
EAN_code[9,1]='00111100111111'
EAN_code[9,2]='00000011000011'
EAN_code[9,3]='11000011000000'
EAN_code[10,1]='00000011001111'
EAN_code[10,2]='00001100111111'
EAN_code[10,3]='11111100110000'
Dimension EAN_left[10]
EAN_left[1]='111111'
EAN_left[2]='112122'
EAN_left[3]='112212'
EAN_left[4]='112221'
EAN_left[5]='121122'
EAN_left[6]='122112'
EAN_left[7]='122211'
EAN_left[8]='121212'
EAN_left[9]='121221'
EAN_left[10]='122121'
Dimension EAN_mode[8]
Store '' To EAN_mode
If Len(Alltrim(BM))<>12 .And. Val(BM)>0
Messagebox('EAN-13编码长度不规范',268,'信息提示')
Return ''
Else
EAN_mode[1]='000000000000000000'
EAN_mode[2]='110011'
For i=0 To 9
If Val(Substr(BM,1,1))=i
For ii=1 To 6
BMZ=Val(Substr(BM,ii+1,1))
MODE=Val(Substr(EAN_left[i+1],ii,1))
EAN_mode[3]=EAN_mode[3]+EAN_code[BMZ+1,MODE]
Endf
Endi
Endf
EAN_mode[4]='0011001100'
For i=1 To 5
BMZ=Val(Substr(BM,i+7,1))
EAN_mode[5]=EAN_mode[5]+EAN_code[BMZ+1,3]
Endf
JY_A=0
JY_B=0
For i=1 To 12
If i%2=0
JY_A=JY_A+Val(Substr(BM,i,1))
Else
JY_B=JY_B+Val(Substr(BM,i,1))
Endif
Endf
JYM=10-(JY_A*3+JY_B)%10
If JYM=10
JYM=1
Endi
EAN_mode[6]=EAN_code[JYM+1,3]
EAN_mode[7]='110011'
EAN_mode[8]='000000000000000000'
EAN_code=EAN_mode[1]+EAN_mode[2]+EAN_mode[3]++EAN_mode[4]+EAN_mode[5]+EAN_mode[6]+EAN_mode[7]+EAN_mode[8]
Dimension BMP[4]
BMP[4]=90
BMP[3]=224
BMP[2]=Int((BMP[3]*3+3)/4)*4*BMP[4]+54
BMP[1]=BMP[2]-54
Dimension BMP_T[4]
For i=1 To 4
k1='0x'+Subs(Righ(Tran(BMP[i],"@0"),8 ),7,2)
k2='0x'+Subs(Righ(Tran(BMP[i],"@0"),8 ),5,2)
k3='0x'+Subs(Righ(Tran(BMP[i],"@0"),8 . . . → Read More: 纠正EAN13函数错误,真正识别条码
By internat, on 09月 19th, 2007
. . . → Read More: 串口通讯控件介绍
By internat, on 09月 11th, 2007
第一步:将Mscomm.srg, Mscomm32.ocx,Mscomm32.dep三个文件复制到系统文件夹中(windows98/me拷到system目录下,windowsnt/2000/xp拷到system32目录下)。要注意的是,MSComm控件是要授权的,所以必须将其使用“执照”Licence 在注册表中登记注册。
第二步:用Windows下的注册工具regsvr32注册该OCX控件,点击“开始”->"运行",再在中填入(假设操作安装在C盘,WIN2000):
Regsvr32 C:winntsystem32Mscomm32.ocx
第三步:在注册表中手工新建一个主键项:先在点击“开始”->"运行",再在中填入regedit命令打开注册表,找到HKEY_CLASSES_ROOTLicenses,在其中添加主键
4250E830-6AC2-11cf-8ADB-00AA00C00905 并将内容设置为:
kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
(注:这项内容也可以用记事本程序打开Mscomm.srg文件看到)
导入reg既可用了。
Microsoft 网站有介绍,但是却没有完整的reg包。所以下面是我自己收集的一些常用控件授权信息,只要用记事本复制上去,另存为后缀名为reg的文件,再双击导入即可!
REGEDIT
HKEY_CLASSES_ROOTLicenses = Licensing: Copying the keys may be a violation of established copyrights.
// Masked Edit Control 6.0 license key
HKEY_CLASSES_ROOTLicensesBC96F860-9928-11cf-8AFA-00AA00C00905 = mmimfflflmqmlfffrlnmofhfkgrlmmfmqkqj
// Chart Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOTLicenses12B142A4-BD51-11d1-8C08-0000F8754DA1 = aadhgafabafajhchnbchehfambfbbachmfmb
// Common Dialog Control 6.0 license key
HKEY_CLASSES_ROOTLicenses4D553650-6ABE-11cf-8ADB-00AA00C00905 = gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj
// ADO Data Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOTLicensesC4145310-469C-11d1-B182-00A0C922E820 = konhqhioohihphkouimonhqhvnwiqhhhnjti
// . . . → Read More: 如何手工注册MSComm等控件
By internat, on 09月 11th, 2007
目 次
MSComm控件两种处理通讯的方式
CommPort属性
RThreshold 属性
CTSHolding 属性
SThreshold 属性
CDHolding 属性
DSRHolding 属性
Settings 属性
InputLen 属性
EOFEnable 属性
Handshake 常数
OnComm 常数(事件)
InputMode 常数 错误消息
MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
1.MSComm控件两种处理通讯的方式
MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
1.1 事件驱动方式
事件驱动通讯是处理串行端口玉枕纱厨交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。
1.2 查询方式
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
2.MSComm 控件的常用属性
MSComm控件有很多重要的属性,但首先必须熟悉几个属性。
CommPort 设置并返回通讯端口号(端口号为1-256的数字)
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。
Input 从接收缓冲区返回和删除字符。
Inbuffersize 设置或返回接收缓冲区的大小,缺省值为1024字节。
Inbuffercount 返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓存区。
Output 向传输缓冲区写一个字符串。
outbfersize 设置或返回发送缓冲区的大小,缺省值为512字节。
outbuffercount 返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空发送缓存区。
. . . → Read More: mscomm详解
By internat, on 07月 11th, 2007
科学是没有边界的,每个人都可以崇拜科学,敬仰伟大的发明家。然而不知道为什么感觉自己的生活创意并不能实现,也无法改变现状,失落和痛苦顿时涌上心头。
曾经有这样一个梦想,在十年当中要创办一个研究所,我记得当时是在2005年7月23日说的。我一直把这个当作我人生的目标,当然在这之前也有许多科学的设想。设想将现在的交通秩序进行变革,把以前的使用固定编程设计好的交通灯,改变为人性话管理的交通灯,并通过网络能够达到适时控制。当时如何进行网络数据传输和将现有交通灯设计网络控制接口成了我每天心中的第一个问题(网络传输受距离的限制)。随着时间的变化,我设想的交通秩序控制得到了新的补充。我开始想如果能在没个路口安装一个摄像头,并于交通灯形成协助的关系。那么公半夜凉初透安执法人员在公路上执法的时候将会大大的提高工作效率,使违法人员无路可走。到这个时候又有了第二个问题:如何进行图像识别(识别当然我首先想到提取特征元素,每个图象上面都会有标志性特征:车牌上有车牌号,有汽车品牌。人物作着装上有衣服品牌,有身高,着装颜色等)。通过图象识别最终可以达到网络追踪的目地。
当我觉得这个设想确实可行的时候开始着手研究的时候,确发现我有太多的知识缺口了,何时才能把这个系统工程搭建成功那。为了缩短系统构建时间让交通设想更早服务社会我想了很多办法,比如硬件接口上采用现有接口然后开发一个设备进行对接,当然开发这个设备属于中间设备可以收发网络信号完成控制交通灯和摄像机功能并将摄像机和交通灯的数据适时传回指挥控制台,在网络协议上采用现有的通信协议,在视频型号处理上采用分布式存储并购卖ocr . . . → Read More: 做一个科学崇拜者,怎么就不对那?
By internat, on 12月 7th, 2006
SQL2000企业版本适用于WIN 2000系统,2003系统和XP一般装不了需要选用个人版,这里介绍一个XP下安装装SQL2000企业版本方法以供参考
一.在SQL服务器的安装盘中找到MSDE这个目录,并且点击setup.exe安装它,过程简单直接下一步就OK了。
二. 重启系统WINDOWSXP,这下就可以看到SQL服务的图标出现了。
三. 再拿出SQL服务器版的安装光盘,直接安装客户端工具(这个不要多说吧?最简单的方法就是直接点击光盘根目录下的autorun.exe)
根据提示安装,自检过程中知道系统不是SERVER版,会提示只安装客户端工具。(哈哈,服务端我已有了)
四. 打开企业管理器,试用SA用户连一下看看,是不是发现SA用户登陆失败?因为你还没有与信任SQL . . . → Read More: XP下安装装SQL2000企业版本 [转]
|
|
|