pe

阅读 / 问答 / 标签

Envelopes的《Glue》 歌词

歌曲名:Glue歌手:Envelopes专辑:DemonI miss youbut I knew I wouldand I"d kiss youif I thought I couldI need something that meanssomething to mea clear cut visionof what I"m missing I wasonly wondering whooh it warms yaheats ya up and pours yaback in your pile of glueI miss youbut I knew I wouldand I"d kiss youif I thought I couldI need something that meanssomething to mea clear cut visionof what I"m missing I wasonly wondering whooh it warms yaheats ya up and pours yaback in your pile of glue(zoe628)http://music.baidu.com/song/2801777

envelopes的反义词是什么英语?

envelopes的意思是信封, 是envelope的名词复数。信封本身是没有反义词的。

stamped envelope是什么意思

有邮戳的信封。【就是说信封上面已经盖了邮局的章。

envelopes是什么意思

envelope [英]u02c8envu0259lu0259up [美]u02c8u025bnvu0259u02cclop, u02c8ɑn- n. 信封,封皮;壳层,外壳;包裹物;[生物学]膜,包袋 [例句]Inside the empty envelope propped up against a cup.紧靠在杯子旁的那个空空的信封里面。

Nothing but stamps and envelopes___for sale.A)are B)is C)are left D)remain

A,除了信封和邮票什么都不卖!

you dont have any envelopes。和you havent any envelopes.这两句话都是对的吗?

后面一句错误 。 have在这里不作为“有”的意思出现 因为加了not,而是作为情态动词出现如果用have 那么后面要跟 no

what else envelopes do you have ?

What else rules do you have? 这句话是错的,把else改成other就可以了 else用法 1.else 是个副词,与不定代词或副词(以-one,-body,-thing,-where结尾的词)连用,表示“另外”、“其它”的意思,用于这些词后面. eg: Would you like something else to drink?你还要喝点别的什么吗? We went to the park and nowhere else.我们到公园去了,其它什么地方也没去. 2.else 还可用在疑问代词或副词(如:who ,what ,where等)后面表示强调. eg : Who else will go to the meeting 还有谁要去参加会议? What else would you do 你还有什么别的事要做吗? 3.else 还常用于固定结构or else ,意为“否则”、“要不然”. eg: Run ,or else we"ll be late .快跑,不然我们就迟到了. Do what I say ,or else !照我的话去做,否则后果自负.

red envelopes是什么意思

红色信封。。

he buys some envelopes in the shop改为一般疑问句?

What does he buys In the shop.他在商店买了什么?

you havent any envelopes.这句话都是对的吗?

这是否定句吧这里have做实义动词表示“有”,否定形式在谓语动词前+don"tyou don"t have any envelopes.

I want some envelopes改为一般疑问句?

Do you want any envelopesuff1f

envelopes在句中bring用什么?

envelopes如果作主语,bring做谓语时,看时态。一般现在时用原形,bring过去时用brought现在进行时用are bringing过去进行时用were bringing现在完成时用have brought过去完成时用had brought

envelope怎么读

envelope[英][u02c8envu0259lu0259up][美][u02c8u025bnvu0259u02cclop, u02c8ɑn-]n.信封,封皮;壳层,外壳;包裹物;[生物学]膜,包袋复数: envelopes双语例句1.the flap of an envelope信封的封盖2.Make sure you"ve signed the cheque before sealing theenvelope.一定要在支票上签了名再封信封。3.Please enclose a stamped addressed envelope to get your test results.请附姓名地址邮资俱全的信封,以便把化验结果寄给你。4.Although I moistened it,the flap doesn"t stick to the envelope.我把信封弄湿了,可是信封口盖还是粘不上。5.I folded the letter and then put it into the envelope.我把信折好后放进信封里。

求英语高手翻译下列短文 谢谢啦~~ or many young people, the late 1960s was a period of revolt against

和许多年轻人,60年代是一个时期的反抗

ype是机械性能缩写吗?

不是。ype是YourPersonsEconomy的缩写,意思为个人的经济,没有机械性能的意思。机械性能的英文是Mechanicalproperty,它的缩写为mp,与ype没有关系。

Linux下编译安装openssl1.0.1d时遇到问题: 请解救!!!!!

1、读一下INSTALL文档2、make clean清理一下3、重新来一次./config --prefix=/usr/local --openssldir=/usr/local/opensslmake;make test;make install

openssl 怎么把 mode 和 exponent

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

win7 64位 编译openssl出的问题

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

suse升级openssl失败问题

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

如何在 Windows 下编译 OpenSSL

1)在微软网站下载并安装VS Studio,2)下载并安装ActivePerl。3)下载并安装Nasm汇编器。4)下载并安装OpenSSL的最新Release包。这里需要强调的是,读者未必需要完全按照步骤编译OpenSSL库,这里的部分次序是可以互换的。在完成所有上述4步后,我们就可以解压缩OpenSSL包,在对它进行修改便可以编译了。在解压缩后,所有的源代码放在openssl- 1.0.1e目录下,在此目录下,有两个文件INSTALL.W32, INSTALL.W64需要被关注。打开其中的任何一个文件,你会看到如何编译OpenSSL的各个步骤。这里,笔者将会再啰嗦一下。1)打开VS Studio命令行工具,如图1所示。若编译64位OpenSSL库,请打开Visual Studio x64 Win64 Command Prompt,反之亦然。2)配置编译文件及安装目录; 编译Win32:perl Configure VC-WIN32 --prefix=c:someopenssldir 编译Win64:perl Configure VC-WIN64A“c:someopenssldir”目录可以改成任何你希望的安装目录3)搭建编译环境: msdo_nasm msdo_ms对于64位编译,将msdo_ms替换成msdo_win64a4)编译OpenSSLnmake -f ms tdll.mak5)安装编译生成的库到“c:someopenssldir”nmake -f ms tdll.mak install

OpenSSL漏洞的基本信息

安全协议OpenSSL2014年4月8日曝出严重的安全漏洞。这个漏洞使攻击者能够从内存中读取多达64 KB的数据。OpenSSL是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,目前正在各大网银、在线支付、电商网站、门户网站、电子邮件等重要网站上广泛使用,所以本次漏洞特别值得关注。使用了存在漏洞的OpenSSL版本,用户登录该网站时就可能被黑客实时监控到登录账号和密码等敏感的信息。对于一个安全协议来说,这样的安全漏洞是非常严重的,但该漏洞并不一定导致用户数据泄露。因为该漏洞只能从内存中读取64K的数据,而重要信息正好落在这个可读取的64k上的几率并不大,攻击者除了具备相应的知识外,还需要很好的运气。该漏洞是由安全公司Codenomicon和谷歌安全工程师独立发现的。使用OpenSSL 1.0.1f的服务器将受影响,运维人员应该马上升级。此外,1.0.1以前的版本不受此影响,但是1.0.2-beta仍需修复。8日下午,大量网站已开始紧急修复此OpenSSL高危漏洞,修复此漏洞普遍需要半个小时到一个小时时间,大型网站修复时间会更长一些。

OpenSSL之X509证书用法

数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authorit y)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权 中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循 ITUT X.509国际标准。 一个标准的X.509数字证书包含以下一些内容: 证书的版本信息; 证书的序列号,每个证书都有一个唯一的证书序列号; 证书所使用的签名算法; 证书的发行机构名称,命名规则一般采用X.500格式; 证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为1950-2049; 证书所有人的名称,命名规则一般采用X.500格式; 证书所有人的公开密钥; 证书发行者对证书的签名。 本文假设你已经安装好了OpenSSL,并且持有一份1.1.1的源码。 证书相关的头文件在x509.h和x509v3.h中、源文件在crypto/x509和crypto/x509v3目录中。 这个结构定义了证书申请信息主体。主要字段含义如下: enc —— 内部编码运算结构,不参与DER编码。 version —— 版本号。 subject —— 申请者信息。 pubkey —— 申请者公钥。 attributes —— 可选属性信息。 这个结构定义了证书申请信息。主要字段含义如下: req_info —— 版本号。 sig_alg —— 签名算法。 signature —— 申请者私钥签名。 这个结构定义了数字证书的信息主体。主要字段含义如下: version —— 版本号。 serialNumber —— 证书的序列号。 signature —— 证书采用的签名算法。 issuer —— 证书的颁发者信息。 validity—— 证书的有效期。 subject —— 证书的持有者信息。 key —— 证书的持有者公钥。 issuerUID —— 颁发者唯一标识。 subjectUID —— 持有者唯一标识。 extensions —— 证书的扩展信息。 这个结构定义了完整的X509数字证书。主要字段含义如下: cert_info —— 证书主体信息。 sig_alg —— 签名算法。 signature —— 签名值,存放CA对该证书采用sig_alg生成的结果。 siginf —— 算名算法信息描述。 ex_data —— 存放证书自定义信息,用于证书验证。 skid —— 主体密钥标识。 akid —— 颁发者密钥标识。 policy_cache —— 证书的策略缓存。 sha1_hash —— 存放证书的sha1摘要值。 aux —— 辅助信息。 在1.1.1中,大多数的数据结构已经不再向使用者开放,从封装的角度来看,这是更合理的。如果你在头文件中找不到结构定义,不妨去源码中搜一搜。 int X509_REQ_set_version(X509_REQ *x, long version); 设置证书请求的版本。 成功返回1,失败返回0。 long X509_REQ_get_version(const X509_REQ *req); 读取证书请求的版本。 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, const char *field, int type, const unsigned char *bytes, int len); 创建一个字符串内容项。 成功返回有效指针,失败返回NULL。 int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, int loc, int set); 将内容项加入到name集合中。 成功返回1,失败返回0。 X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); 从name集合中获取指定内容项。 成功返回有效指针,失败返回NULL。 X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); 从name集合中删除指定内容项。 成功返回有效指针,失败返回NULL。 int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); 设置证书请求的申请者信息。 成功返回1,失败返回0。 X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); 获取证书请求的申请者信息。 成功返回有效指针,失败返回NULL。 int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); 设置证书请求的申请者公钥。 成功返回1,失败返回0。 EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); 获取证书请求的申请者公钥。 成功返回有效指针,失败返回NULL。 int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); 对证书请求结构进行签名。 成功返回签名长度,失败返回-1。 int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); 对证书请求结构进行签名验证。 成功返回1,失败返回0。 int X509_REQ_print(BIO *bp, X509_REQ *req); 打印证书请求结构。 成功返回1,失败返回0。 int X509_set_version(X509 *x, long version); 设置证书的版本。 成功返回1,失败返回0。 long X509_get_version(const X509 *x); 读取证书的版本。 int X509_set_issuer_name(X509 *x, X509_NAME *name); 设置证书的颁发者信息。 成功返回1,失败返回0。 X509_NAME *X509_get_issuer_name(const X509 *a); 获取证书的颁发者信息。 成功返回有效指针,失败返回NULL。 int X509_set_subject_name(X509 *x, X509_NAME *name); 设置证书的所有者信息。 成功返回1,失败返回0。 X509_NAME *X509_get_subject_name(const X509 *a); 获取证书的所有者信息。 成功返回有效指针,失败返回NULL。 int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); 设置证书的有效期。 成功返回1,失败返回0。 const ASN1_TIME * X509_get0_notBefore(const X509 *x); const ASN1_TIME *X509_get0_notAfter(const X509 *x); 获取证书的有效期。 成功返回有效指针,失败返回NULL。 int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); 设置证书的颂发者公钥。 成功返回1,失败返回0。 EVP_PKEY *X509_get_pubkey(X509 *x); 获取证书的颂发者公钥。 成功返回有效指针,失败返回NULL。 int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); 对证书结构进行签名。成功返回签名长度。 int X509_verify(X509 *a, EVP_PKEY *r); 验证证书的签名。成功返回1,失败返回0。 int X509_print(BIO *bp, X509 *x); 打印证书结构。成功返回1,失败返回0。 int X509_check_issued(X509 *issuer, X509 *subject); 检查subject证书是否由issuer颁发。成功返回1,失败返回0。 下面这个例子演示如何使用API生成证书申请文件。 输出: X509_REQ_set_version() ret:[1] X509_NAME_ENTRY_create_by_txt() ret:[0x20ef2d0] X509_NAME_add_entry() ret:[1] X509_REQ_set_subject_name() ret:[1] X509_REQ_set_pubkey() ret:[1] X509_REQ_sign() ret:[64] PEM_write_bio_X509_REQ() ret:[1] 生成的certreq.pem文件内容: -----BEGIN CERTIFICATE REQUEST----- MIHHMHMCAQEwEDEOMAwGA1UEKQwFemhhbjMwWjANBgkqhkiG9w0BAQEFAANJADBG AkEAxYRRHNO231nDXzt1t6y21BDim3x5xeHDbdhvcP3GVi0reAh8qsd4PzJ9Z7AU 3NgSFunTfYJu4IdKO2ZNNv4uoQIBA6AAMA0GCSqGSIb3DQEBBQUAA0EAQmQRd9e+ ORnnsokq28fG3uImdtnI5lpjf/RLsOJ5QUvbBYcXsZ4poOB/PfBTXIDikX2eBB++ bpzxkTyonMg5TA== -----END CERTIFICATE REQUEST----- 下面这个例子演示如何使用API读取并解码证书申请文件。 输出: PEM_read_bio_X509_REQ() ret:[0x1157390] X509_REQ_verify() ret:[1] X509_REQ_get_subject_name() ret:[0x1157510] zhan3 下面这个例子演示如何使用API生成证书文件。但是由于证书的结构非常复杂,这个例子仅仅操作了部分字段。 输出: X509_set_version() ret:[1] X509_NAME_ENTRY_create_by_txt() ret:[0x1a9c4d0] X509_NAME_add_entry() ret:[1] X509_set_subject_name() ret:[1] X509_set_issuer_name() ret:[1] X509_set1_notBefore() ret:[1] X509_set1_notAfter() ret:[1] X509_set_pubkey() ret:[1] X509_sign() ret:[64] PEM_write_bio_X509() ret:[1] 生成的cert.pem文件内容: -----BEGIN CERTIFICATE----- MIIBDDCBt6ADAgEBAgEAMA0GCSqGSIb3DQEBBQUAMBAxDjAMBgNVBCkMBXpoYW4z MB4XDTIxMDkxMTEzNDkyOVoXDTIxMDkxMTEzNDkyOVowEDEOMAwGA1UEKQwFemhh bjMwWjANBgkqhkiG9w0BAQEFAANJADBGAkEAvAYbGFNXsmDDYmWDsK6wRrL6/zyP aJnKIfwHjLhK6f/6LVhHQCRhDPHlWR4lUAwRYzCh6Ypa21nk3mkPxAEOBQIBAzAN BgkqhkiG9w0BAQUFAANBAGw7dvUpR8FBcuUkRDI/pK+dbYH1WKpUdi82QmATFLfR 4MhRAoybnhYlyxLA3D+c0NfBcl3vk3bhUa/K56ItmpU= -----END CERTIFICATE----- 下面这个例子演示如何使用API读取并解码证书文件。 输出: PEM_read_bio_X509() ret:[0x16eb930] X509_verify() ret:[1] X509_get_subject_name() ret:[0x16eb7e0] zhan3

openssl/ssl.h,该怎么处理

最近需要安装openssl,需要使用openssl/md5.h这个头文件,可是使用Ubuntu的apt-get install openssl安装,没有这个文件,连urs/include/openssl都没,经过一天的查找资料都没解决,最后想到了使用源码安装openssl,最终解决了。OpenSSL 是一款开源的 SSL 软件包,采用 SSL 的公开密钥技术,用于实现传输层的通信加密功能。OpenSSL 支持 Linux、Windows、BSD、Mac 等平台,功能强大,包含丰富的密码算法库,SSL 协议库和应用程序。一、SSL 基本常识 1.1、什么是 SSL? 安全套接层(Secure Sockets Layer,SSL), 最初由 netscape 公司设计,建立在传输层的安全通信协议,采用公开密钥体系的证书认证方式来确保客户端和 SSL 服务器之间的通信安全。1.2、SSL 认证流程 SSL 客户端在 TCP 连接建立之后,发出一个消息(包含了客户端所支持的算法列表)给服务器端,然后服务器端返回一个数据包(确定了这次通信所需算法)和 SSL 服务器端的证书(包含了公钥)给客户端。客户端随后会用收到的公钥将消息加密再传送,该加密消息只能用 SSL 服务器端私钥解密,即便中途被截取也无法获知内容。二、编译安装 OpenSSL 2.1、准备工作 系统版本:Ubuntu-10.10-Server-I386更新源:apt-get update升级软件:apt-get upgrade更新系统:apt-get dist-upgrade2.2、查看OpenSSL版本 部分 Linux 系统已默认安装了 OpenSSL 0.9.8,特别是 VPS 一般都安装了。openssl version -a2.3、安装基础编译环境apt-get install build-essential2.3、编译安装 Zlib 库(这一步我没有成功,但是也成功安装了openssl)tar -zxf zlib-1.2.5.tar.gzcd zlib-1.2.5/./configure --prefix=/usr/localmake && make install2.4、卸载旧版本 OpenSSLapt-get purge opensslrm -rf /etc/ssl #删除配置文件2.5、编译与安装 OpenSSLprefix 是安装目录,openssldir 是配置文件目录,另外建议安装两次,shared 作用是生成动态连接库。tar -zxf openssl-1.0.0c.tar.gzcd openssl-1.0.0c/./config --prefix=/usr/local --openssldir=/usr/local/sslmake && make install./config shared --prefix=/usr/local --openssldir=/usr/local/sslmake cleanmake && make

openssl gcc编译为什么要加-lssl

-l 后面跟的名字就是库的名字, 因为你用到了openssl中的函数, 但是你的代码中有没有该函数的实现, 只好链接openssl提供的链接库提示编译器, 实现在该库文件中

Linux升级openssl时遇到的奇怪错误

服务器系统为centos6.5 想对系统的openssl进行升级 于是开始安装,最先开始安装的是1.1.1-pre8 后来将其删除重新安装1.1.1b。安装过程中出现了奇怪的问题 具体如下: 建立openssl硬链接时,同时建立一个openssl 和 testopenssl 运行命令 ls -li|grep ssl后可以看到这两个硬链接对应了同样的 inode 796072 如图1: 可是在运行 openssl version 和 testopenssl version时确出现了 奇怪的现象 图2 得到的运行结果居然不同 其中1.1.1b为目前安装的版本 1.1.1-pre8为之前试安装的版本 实在不明白原因是什么 附:在卸载1.1.1-pre8时 把/usr/bin/openssl 软链接删除后 发现openssl软链接仍然可以使用 当时就觉得非常奇怪 图3 甚至将usr/bin 下对应的链接文件换回系统默认的openssl后 仍然找到的是之前安装的1.1.1-pre8版本 后来安装git时 报错好像也与openssl有关 这个奇怪的错误已然成为本系统中的一个毒瘤了!!! 今天 了解到了 bashrc profile 文件 怀疑 可能将openssl配置到了 这类文件里面 参考 https://blog.csdn.net/chenchong08/article/details/7833242 缘由卸载git 后 发现使用 git version 仍能显示版本号

怎么看openssl版本

1、打开openss,输入命令:yum -y install redhat-lsb。2、安装成功后执行lsb_release命令。3、直接执行lsb_release命令输出LSB Version信息,等价于lsb_release -v。4、查看发布的版本号,输入命令:lsb_release -r。5、查看版本描述信息,输入命令:lsb_release -d。6、显示所有LSB相关的信息,输入命令:lsb_release -a。7、查看lsb_release支持的所有参数,输入命令:lsb_release -h。

SSL和SSH和OpenSSH,OpenSSL有什么区别

SSL 是通讯链路的附加层。可以包含很多协议。https, ftps, .....ssl是一种国际标准的加密及身份认证通信协议,您用的浏览器就支持此协议。SSL(Secure Sockets Layer)最初是由美国Netscape公司研究出来的,后来成为了Internet网上安全通讯与交易的标准。SSL协议使用通讯双方的客户证书以及CA根证书,允许客户/服务器应用以一种不能被偷听的方式通讯,在通讯双方间建立起了一条安全的、可信任的通讯通道。它具备以下基本特征:信息保密性、信息完整性、相互鉴定。 主要用于提高应用程序之间数据的安全系数。SSL协议的整个概念可以被总结为:一个保证任何安装了安全套接字的客户和服务器间事务安全的协议,它涉及所有TC/IP应用程序。SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的"通道"。SSH客户端与服务器端通讯时,用户名及口令均进行了加密,有效防止了对口令的窃听。最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。SSH是由客户端和服务端的软件组成的。SSH安装容易、使用简单,而且比较常见,一般的Unix系统、Linux系统、FreeBSD系统都附带有支持SSH的应用程序包。OpenSSL 一个C语言函数库,是对SSL协议的实现。openssl 中也有个叫做 openssl 的工具,是 openssl 中的库的命令行接口。OpenSSH 是对SSH协议的实现。openssh依赖于openssl,没有openssl的话openssh就编译不过去,也运行不了。HTTPS可以使用TLS或者SSL协议,而openssl是TLS、SSL协议的开源实现,提供开发库和命令行程序。很多涉及到数据加密、传输加密的地方都会使用openssl的库来做。可以理解成所有的HTTPS都使用了openssl。

php怎样安装openssl扩展

php安装openssl扩展的方法:1、执行【yum install openssl openssl-devel】命令安装openssl组件;2、编辑php.ini配置文件,添加扩展组件;3、重启php服务。1、安装openssl组件(推荐教程:php视频教程)一般安装包ext目录包含了很多安装包自己找就可以:/usr/local/src/php-5.6.30/ext/openssl 。(1)cd /usr/local/src/php-5.6.30/ext/openssl (2)mv config0.m4 config.m4(3)phpize(4)./configure --with-openssl --with-php-config=php-config,如果此步报Cannot find OpenSSL"s <evp.h> 的错误执行以下命令:yum install openssl openssl-develln -s /usr/lib64/libssl.so /usr/lib/(相关推荐:php培训)(5)make(6)make install,安装成功会生成一个目录里面包含openssl.so2、修改php.ini文件, 扩展组件添加extension=openssl.so3、重启php和nginx4、查看openssl是否安装成功

linux 下怎样生成openssl的静态文件

换成高版本的openssl 编译 ./config --disable-shared --enable-static --prefix=/usr/local/openssl --openssldir=/usr/local/openssl make make install 都通过了。 但是找不到 libeay32.a openssl-1.0.0c目录下只有libcrypto.a 和libssl.a

如何编译openssl x64

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

指定OpenSSL编译好后的安装路径的时候提示拒绝访问。求问怎么解决

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

windows下openssl不兼容怎么办

参考openssl目录下的install.win32说明进行安装:1、进入解压目录。>cd C:openssl-0.9.8k2、运行Configure。>perl Configure VC-WIN32如不成功会有明显提示。3、创建Makefile文件。>msdo_ms推荐使用这种方式,另外两种方式 如果使用也必须保证本机有编译器才能使用。:msdo_masm (默认vc 自带的编译器;也也以自己下载安装):msdo_nasm (需要自己下载)4、配置VC环境变量。>cd C:Program FilesMicrosoft Visual StudioVC98Bin >vcvars32.bat5、编译动态链接库。>cd C:openssl-0.9.8k>nmake -f ms tdll.mak可能会缺少“ml.exe”,可下载masm并把其中的ml.exe拷贝至C:Program FilesMicrosoft Visual StudioVC98Bin下即可。运行 nmake -f ms tdll.mak test.检查上一部编译是否成功。正常的话会执行编译后的测试程序至此OpenSSL在windows下编译完成,编译得到的dll和lib文件位置:静态库libeay32.lib和ssleay32.lib位于out32文件夹下,动态库libeay32.dll,libeay32.lib,ssleay32.dll,ssleay32.lib位于out32dll文件夹下。6、为VC添加头文件和静态链接库路径。ToolsàOptionsàDirectores,在Include files中增加C:openssl-0.9.8k inc32目录;在Libray files中增加C:openssl-0.9.8kout32dll。7、编写OpenSSL程序,可参考C:openssl-0.9.8kdemos(1)包含相应头文件#include <openssl/***.h>(2) 添加静态链接库#pragma comment(lib, "libeay32.lib")#pragma comment(lib, "ssleay32.lib")或ProjectàSettingsàLinkàObjectlibrary modules填写libeay32.lib ssleay32.lib。(3)将动态链接库ssleay32.dll, libeay32.dll复制到C:WINDOWSsystem32或Debug目录下,确保动态链接库在正确的路径。可能遇到的问题:1、NMAKE : fatal error U1077: "ml" : return code "0x1"解决办法:在环境变量PATH中添加路径C:masm32in,并按照参考资料3修改ml.exe文件。2、NMAKE : fatal error U1077: "cl" : return code "0x2"解决办法:去掉ipv6(命令行中执行perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0)3、fatal error LNK1103: debugging information corrupt; recompile module解决办法:去掉ms文件夹下对应文件nt.mak或ntdll.mak文件中/debug选项

如何使用Openssl 私钥进行解密

在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了。 首先需要进入openssl的交互界面,在命令行了输入openssl即可; 1)生成RSA私钥: genrsa -out rsa_private_key.pem 1024 该命令会生成1024位的私钥,生成成功的界面如下: 此时我们就可以在当前路径下看到rsa_private_key.pem文件了。 2)把RSA私钥转换成PKCS8格式输入命令pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt,并回车得到生成功的结果,这个结果就是PKCS8格式的私钥,如下图: 3) 生成RSA公钥 输入命令rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回车,得到生成成功的结果,如下图: 此时,我们可以看到一个文件名为rsa_public_key.pem的文件,打开它,可以看到-----BEGIN PUBLIC KEY-----开头,-----END PUBLIC KEY-----结尾的没有换行的字符串,这个就是公钥。

如何在Windows下编译OpenSSL

1、使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量) 2、解压缩openssl的包,进入openssl的目录 3、perl configure VC-WIN32 尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。 4、msdo_ms 在解压目录下执行msdo_ms命令 5、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件

Linux-SSL和SSH和OpenSSH,OpenSSL有什么区别

1、SSL(Secure Sockets Layer 安全套接层),它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。比如你访问https://servername 就是用了ssl协议,地址栏会出现小锁,双击就能查看ssl服务器证书的详细信息。TCP端口:4432、SSH(Secure Shell 远程登陆用),安全可以和telnet比较一下,比如telnet传输用户密码是明文的,而SSH是加密的。明文的可以监听到。TCP端口223、OpenSSH是个SSH的软件,OpenSSH is the premier connectivity tool for remote login with the SSH protocol. linux/unix都用openssh软件提供SSH服务。简单来说,比如以前的Solaris系统默认不提供ssh服务,需要安装OpenSSH才行。The OpenSSH suite consists of the following tools:Remote operations are done using ssh, scp, and sftp.Key management with ssh-add, ssh-keysign, ssh-keyscan, and ssh-keygen.The service side consists of sshd, sftp-server, and ssh-agent.4、OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序。比如很多程序安装依赖openssl头文件。openssl命令也是一个很实用且有很多参数的工具。比如申请ssl证书时候或者计算hash值时候都用的到。例如:a)openssl md5 a.txtb)echo -n 123456 |openssl md5c)openssl创建localhost证书d)使用openssl命令加密文件e)验证ssl服务器openssl s_client -connect servername:443

openSSL漏洞是什么啊?

openSSL是一个保护网络通信安全和数据完整的安全协议,就像一个门锁。其他专业的东西知道也没用,就不讲了。它主要是应用在在网银,在线支付,电商还有电子邮件这方面,保护支付安全和通信保密的。所有地址栏https的,都是用它加密的。 所以说,虽然这个名词看起来陌生,但是和咱们普通用户还是很有关系的。我也是最近听说出了漏洞,特别关注了一下。这个漏洞是说有些版本的openSSL能够让入侵者一点一点的翻阅用户的信息。然后拼凑出你的银行密码等等隐私数据。这个危害当然是很大了。我们普通的用户,平时最好开通一下手机验证,还有勤换密码。这样可以稍微安全点 。 我电脑上本来装过腾讯电脑管家,可以防病毒,检测网络安全环境,现在又紧急推出了openSSL漏洞预警功能,在登录有漏洞的网址时会弹出拦截。所以我就顺便用它再加一重保险了。别家软件我也没听说有这方面做的更好的了。你要是担心的话可以下一个这种安全软件。 希望能帮到你啦~

请教Linux下Openssl安装的问题

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

HTTPS 和 OpenSSL 是什么关系

SSL+OpenSSL(配置要ATS标准以上)=HTTPSSSL证书获取:网页链接OpenSSL:本身服务器就有的,一种运行SSL证书的加密条件。

codeblocks里面怎么用openssl

:1、打开Codeblocks软件。 2、点击新建按钮,选择File...。 3、选择C/C++source,点击Go。 4、点击Next。 5、根据需求选择C或C++,此处以C为例。 6、点击路径选择按钮并设置文件名,确认后点击Finish按钮。

如何查看openssl 加密算法

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

openssl 证书操作,输入扩展项的OID, 返回扩展项中的值

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

openssl有什么方法可以优化加解密

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788#include<stdio.h>#include<stdlib.h>#include<string.h>#include<openssl/rsa.h>#include<openssl/engine.h>int main(int argc, char* argv[]){printf("openssl_test begin ");RSA* rsa=NULL;char originstr[]="hello "; //这是我们需要加密的原始数据//allocate RSA structure,首先需要申请一个RSA结构题用于存放生成的公私钥,这里rsa就是这个结构体的指针rsa = RSA_new();if(rsa==NULL){printf("RSA_new failed "); return -1;}//generate RSA keysBIGNUM* exponent;exponent = BN_new(); //生成RSA公私钥之前需要选择一个奇数(odd number)来用于生成公私钥if(exponent ==NULL){printf("BN_new failed "); goto FAIL1;}if(0==BN_set_word(exponent,65537)) //这里选择奇数65537{printf("BN_set_word failed "); goto FAIL1;}//这里modulus的长度选择4096,小于1024的modulus长度都是不安全的,容易被破解if(0==RSA_generate_key_ex(rsa,4096,exponent,NULL)) {printf("RSA_generate_key_ex failed "); goto FAIL; }char* cipherstr = NULL;//分配一段空间用于存储加密后的数据,这个空间的大小由RSA_size函数根据rsa算出cipherstr = malloc(RSA_size(rsa)); if(cipherstr==NULL){printf("malloc cipherstr buf failed ");goto FAIL1;}//下面是实际的加密过程,最后一个参数padding type,有以下几种。 /*RSA_PKCS1_PADDINGPKCS #1 v1.5 padding. This currently is the most widely used mode.RSA_PKCS1_OAEP_PADDINGEME-OAEP as defined in PKCS #1 v2.0 with SHA-1, MGF1 and an empty encoding parameter. This mode is recommended for all new applications.RSA_SSLV23_PADDINGPKCS #1 v1.5 padding with an SSL-specific modification that denotes that the server is SSL3 capable.RSA_NO_PADDINGRaw RSA encryption. This mode should only be used to implement cryptographically sound padding modes in the application code. Encrypting user data directly with RSA is insecure.*/ //这里首先用公钥进行加密,选择了RSA_PKCS1_PADDINGif(RSA_size(rsa)!=RSA_public_encrypt(strlen(originstr)+1,originstr,cipherstr,rsa,RSA_PKCS1_PADDING)){printf("encryption failure ");goto FAIL2;}printf("the original string is %s ",originstr);printf("the encrypted string is %s ",cipherstr);//Now, let"s decrypt the string with private key//下面来用私钥解密,首先需要一个buffer用于存储解密后的数据,这个buffer的长度要足够(小于RSA_size(rsa))//这里分配一个长度为250的字符数组,应该是够用的。char decrypted_str[250];int decrypted_len;if(-1=(decrypted_len=RSA_private_decrypt(256,cipherstr,decrypted_str,rsa,RSA_PKCS1_PADDING))){printf("decryption failure ");goto FAIL2;}printf("decrypted string length is %d,decryped_str is %s ",decrypted_len,decrypted_str);FAIL2:free(cipherstr);FAIL1:BN_free(exponent);FAIL:RSA_free(rsa);return 0;}以上是源代码,下面使用下面的编译命令在源码所在路径下生成可执行文件 gcc *.c -o openssl_test -lcrypto -ldl -L/usr/local/ssl/lib -I/usr/local/ssl/include其中,-lcrypto和-ldl是必须的,前者是OpenSSL中的加密算法库,后者是用于成功加载动态库。

如何在Windows下编译OpenSSL

如何在Windows下编译OpenSSL (VS2010使用VC10的cl编译器)1、安装ActivePerl//初始化的时候,需要用到perl解释器2、使用VS2010下的Visual Studio 2010 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)3、解压缩openssl的包,进入openssl的目录4、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。5、msdo_ms.bat在解压目录下执行msdo_ms.bat命令6、nmake -f ms tdll.mak7、nmake -f ms t.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll (6), out32 (7)里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。。。继续执行nmake -f ms tdll.mak=================================一、编译并安装OpenSSL1、按照标准步骤从源代码编译安装OpenSSL 在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。 下载最新版本的Perl然后安装之。 下载最新版本的OpenSSL 然后将源码解压缩到某个目录(如 C:openssl-0.9.8j)中。 进入openssl源码目录。 cd c:openssl-1.0.1e 以下为参照该目录下的文件INSTALL.W32的执行过程: 运行configure: perl Configure VC-WIN32 创建Makefile文件: msdo_ms.bat 编译动态库: nmake -f ms tdll.mak 编译静态库: nmake -f ms t.mak 测试动态库: nmake -f ms tdll.mak test 测试静态库: nmake -f ms t.mak test 安装动态库: nmake -f ms tdll.mak install 安装静态库: nmake -f ms t.mak install 清除上次动态库的编译,以便重新编译: nmake -f ms tdll.mak clean 清除上次静态库的编译,以便重新编译: nmake -f ms t.mak clean2、如果嫌麻烦,不想编译,可以直接用别人做好的windows OpenSSL 安装包(我用的是0.9.8j版), 可以下载 OpenSSL for Windows,直接安装。P.S. OpenSSL for Windows 的源代码有一些数据类型和VC6的编译器不兼容,我发现的不兼容的数据类型如下:在OpenSSL安装目录的下的include/bn.h文件中,将 #define BN_ULLONG unsigned long long #define BN_ULONG unsigned long long #define BN_LONG long long 分别修改为: #define BN_ULLONG ULONGLONG #define BN_ULONG ULONGLONG #define BN_LONG LONGLONG 否则,会出现编译错误。二、使用OpenSSL 在VC中配置使用以上的函数库: 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。 在"Show directories for:"的"Include files"选项中新增目录"C:opensslinclude"; "Library files"选择中新增目录"C:openssllib"。 然后在需要链接OpenSSL函数库的工程中加入如下两句: #pragma comment(lib, "ssleay32.lib") #pragma comment(lib, "libeay32.lib") 其作用是将OpenSSL所需的库导入工程中。三、问题 我在链接OpenSSL的静态函数库时遇到类似以下的问题: Linking... msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj) ... 这是由于OpenSSL的静态函数库使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。 调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下: 编辑文件 ms t.mak,将该文件第19行 "CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -DOPENSSL_NO_DYNAMIC_ENGINE" 中的"/MD"修改为"/MT"。然后重新编译安装OpenSSL即可。四、附录:在VC中对C/C++ 运行时库不同版本编译指令说明 《在VC中对C/C++ 运行时库不同版本编译指令说明》一文中详细介绍了连接不同版本库的编译指令如下: C Runtime Library: /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Release版本 /MTd LIBCMTD.LIB 多线程静态链接的Debug版本 /clr MSVCMRT.LIB 托管代码和非托管代码混合 /clr:pure MSVCURT.LIB 纯托管代码 C++ Standard Library: /MD MSVCPRT.LIB 多线程DLL的Release版本 /MDd MSVCPRTD.LIB 多线程DLL的Debug版本 /MT LIBCPMT.LIB 多线程静态链接的Release版本 /MTd LIBCPMTD.LIB 多线程静态链接的Debug版本===============================================一 配置编译参数 配置编译参数是进行OpenSSL编译的第一步,这一步可以确定系统的环境,使用什么编译器,默认安装路径以及其他一些选项.步骤如下:1.安装perl:下载ActivePerl-5.8.8.822-MSWin32-x86-280952.msi,然后点击msi文件进行安装!2..配置编译参数:下载openssl-1.0.1e.tar.gz,解压.vc:首先在C:Program FilesMicrosoft Visual Studio .NET 2010VC10in目录下执行vcvars32.bat,然后在解压后的openssl-1.0.1e目录,执行命令配置编译参数:perl Configure VC-WIN32 bc:在解压后的openssl-0.9.8g目录下执行:perl Configure BC-32二 生成批处理文件 在使用configure脚本配置好的编译参数后,就可以使用批处理命令来生成编译脚本.生成编译脚本根据采用编译器的不同通常使用不同的批处理文件.就目前来说,使用vc编译的时候有三种选择:do_ms,do_masm和do_nasm来创建一系列编译脚本文件,即.mak脚本.步骤如下:vc:在openssl-1.0.1e目录下,执行命令来批处理文件:do_ms,do_masm和do_nasmbc:1.下载nsm09839.zip微软汇编编译器,解压,拷贝到c:/windows目录下,修改名称为nasmw.exe;2.在openssl-1.0.1e目录下,执行命令来批处理文件:msdo_nasm三 代码编译vc:完成上面步骤后,可以看到两个关键脚本文件:nt.mak和ntdll.mak.如果我们需要编译后的OpenSSL库是支持动态DLL形式的,那么应该使用ntddll.mak文件进行编译,这样编译完成我们会得到四个与OpenSSL的API库有关文件:ssleay32.lib,libeay32.lib,ssleay32.dll和libeay32.dll.执行的编译命令形式如下:nmake -f ms tdll.mak如果不希望以动态库的形式使用OpenSSL,那么可以使用nt.mak文件进行编译.这样编译后使用OpenSSL的时候,回直接将代码链接进我们的程序里面.执行命令如下:nmake -f ms t.makbc:执行命令来完成代码编译:make -f mscb.mak四 ELSE1) 测试动态库: nmake -f ms tdll.mak test 测试静态库: nmake -f ms t.mak test 安装动态库: nmake -f ms tdll.mak install 安装静态库: nmake -f ms t.mak install 清除上次动态库的编译,以便重新编译: nmake -f ms tdll.mak clean 清除上次静态库的编译,以便重新编译: nmake -f ms t.mak clean2) 使用OpenSSL 在VC中配置使用以上的函数库: 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。 在"Show directories for:"的"Include files"选项中新增目录"C:opensslinclude";"Library files"选择中新增目录"C:openssllib"。 然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

怎么看openssl版本

1、打开openss,输入命令:yum -y install redhat-lsb。2、安装成功后执行lsb_release命令。3、直接执行lsb_release命令输出LSB Version信息,等价于lsb_release -v。4、查看发布的版本号,输入命令:lsb_release -r。5、查看版本描述信息,输入命令:lsb_release -d。6、显示所有LSB相关的信息,输入命令:lsb_release -a。7、查看lsb_release支持的所有参数,输入命令:lsb_release -h。

openssl 生成ssl证书 能不能用

自己生成的,无法使用不会被浏览器信任,需要淘宝Gworg获取SSL证书才可以信任。

如何处理OpenSSL的SSL

你读了OpenSSL的文档 ssl_read 和 ssl_get_error 了吗?ssl_read:如果基础生物阻塞, SSL_read()将只返回,一旦 读操作已完成或 发生错误,除了当 重新谈判发生,其中 区分可能发生SSL_ERROR_WANT_READ. 这种行为可以被控制 的的SSL_MODE_AUTO_RETRY标志 SSL_CTX_set_mode(3)调用.如果底层BIO是非阻塞的, SSL_read()也将返回当 底层的生物不能满足 SSL_read的需要()以继续 操作.在这种情况下的呼叫 SSL_get_error(3)的返回值 SSL_read的()将产生 SSL_ERROR_WANT_READ或 SSL_ERROR_WANT_WRITE.如在任何时间 重新谈判是可能的,调用 SSL_read()也可引起写 操作!调用进程然后 必须服用后重复调用 适当的行动,以满足 SSL_read的需要().动作 依赖于底层生物上.何时 使用非阻塞套接字,什么都没有 是必须要做的,但select()可以 用于检查所需 条件.ssl_get_error:SSL_ERROR_WANT_READ,SSL_ERROR_WANT_WRITE该操作没有完成;该 同样的TLS / SSL的I / O功能应该是 以后再次调用.如果,届时, 底层的生物有数据可供 读数(如果结果代码是 SSL_ERROR_WANT_READ)或允许写入 数据(SSL_ERROR_WANT_WRITE),然后一些 TLS / SSL协议的进展将采取 的地方,即,至少一部分的TLS / SSL的 记录将被读取或写入.注 该重试可能会再次导致 SSL_ERROR_WANT_READ或SSL_ERROR_WANT_WRITE 条件.没有固定的上限 对于迭代的次数,可能 是必要的,直到变成进度 在应用协议层面可见.对于插座的BIOS(例如,当SSL_set_fd() 用),在select()或poll() 底层套接字可以用来找到 出来的时候,TLS / SSL的I / O功能 应该重试.警告:任何TLS / SSL的I / O功能可 导致任何SSL_ERROR_WANT_READ的 和SSL_ERROR_WANT_WRITE.特别地, SSL_read()或SSL_peek()可能要 写数据和SSL_write()可能要 读取数据.这主要是因为 可能发生在任何的TLS / SSL握手 该协议(由发起时的时间 在客户端或服务器); SSL_read(),SSL_peek()和SSL_write() 将处理任何未决的握手.OpenSSL的是作为一个状态机.SSL_ERROR_WANT_READ意味着更多的入站数据,并SSL_ERROR_WANT_WRITE意味着更多的出站数据,是必要的,以便使正向连接上的进步.如果你得到SSL_ERROR_WANT_WRITE上ssl_read()操作,你需要发送出站数据,或者至少等待套接字成为可写的.如果你得到SSL_ERROR_WANT_READ上ssl_write()操作,你需要阅读的入站数据.你应该订阅 OpenSSL mailing lists .这个问题被问了很多.

如何正确使用Nodejs 的 c++ module 链接到 OpenSSL

事情的起因是这样的, 因为某些原因, 最近在写 Nodejs 的 c++ module, 然后在js这边调用。 网络通信自然离不开ssl, 于是需要链接到Openssl的库。我们本来的期望是,需要用户安装有Openssl的运行库, 然后我们的c++ module 动态链接到Openssl的so库上来运行。起初一切看起来还不错,直到我们发现这个openssl的函数不能工作:PKCS7_sign()PKCS7_sign ( )我们发现:如果我们的 c++ 模块与Openssl库动态链接的话, 编译都没问题. 但是运行会出现: PKCS7_sign 符号无法找到的错误.如果我们的 c++ 模块与Openssl库静态链接的话, 编译也没问题, 但是运行时,调用这个函数的地方没有效果, 这个函数返回值是 0. 按照文档表示出现错误, 但是用 Openssl的函数 ERR_get_error 获取错误码也是0. 表示没有错误码.在linux上是这样, 那在Mac上呢? 用Mac试了一下, 发现Mac没有问题. 于是,想到这可能是Nodejs的一个bug. 然后就去 Nodejs 给它报了一个bug: [https://github.com/joyent/node/issues/8026][1]同时, google上搜索了 nodejs linking to openssl 类似的关键字.找到这样几篇文章:https://github.com/TooTallNate/node-gyp/wiki/Linking-to-OpenSSLhttps://github.com/joyent/node/issues/3915http://serverfault.com/questions/338092/how-can-i-build-node-js-using-static-libssl-and-crypto-librarieshttps://github.com/robhawkes/node-extension/issues/1通过搜索, 我们发现, 原来Nodejs自己也使用了Openssl 库, 推测nodejs自己的crypto模块也是使用Openssl lib实现的. 这点从Nodejs的源码中就能发现, 它包含了最新的Openssl的全部源码.其中写上面第一篇文章: https://github.com/TooTallNate/node-gyp/wiki/Linking-to-OpenSSL 的那个帅哥是Nodejs的开发人员.基本结论:Nodejs 自己使用了Openssl在Nodejs 0.6之前, Nodejs是动态链接到 Openssl 库的. 而之后的版本都是静态链接的.这时发现 Node 那边已经回复我的bug了: https://github.com/joyent/node/issues/8026Node 解释的原因:Node 自己编译之后, 把自己没用到的符号清除, 所以我们在运行时就找不到符号了. 于是他们把这bug 修掉了. 保留了全部符号. 这导致 Node 的体积大了 400k.

如何查看windows服务器端和客户端openssl版本

一、准备工作1.windows2003添加组件添加IIS:勾选“应用程序服务器”,然后双击进入下图,勾选“IIS”和“ASP.NET”添加证书系统:勾选“证书服务”添加组件的时候要求填写的就按照操作填上就行了,然后下一步,直到完成。2.把openssl(执行版,有的叫编译后版)解压到d:下,当然哪个盘都可以。二、获取IIS证书请求架设好IIS网站后,在【目录安全性】选项卡中点击【服务器证书】按钮,【下一步】,【新建证书】,【现在准备证书请求--下一步】,输入【名称】,输入【单位】和【部门】,输入【公用名称】,选择【国家】并输入【省】和【市县】并【下一步】,【下一步】,【下一步】,【完成】,IIS的证书请求已经获取,就是C:certreq.txt。这里请牢记输入的信息。三、开始操作openssl(cmd –> d:openssl-0.9.7out32dll 下执行下面的操作,注意openssl.cnf文件,后面命令都是用它编译的)1.生成自签名根证书openssl req -x509 -newkey rsa:1024 -keyout cakey.pem -out cacert.pem -days 3650 -config d:openssl-0.9.7appsopenssl.cnf PEM pass phrase:根证书密码,当然很重要! Country Name: CN //两个字母的国家代号 State or Province Name: guang dong //省份名称 Locality Name: guang zhou //城市名称 Organization Name: sunrising //公司名称 Organizational Unit Name: home //部门名称 Common Name: besunny //你的姓名(要是生成服务器端的证书一定要输入域名或者ip地址) Email Address: Email地址2.把cakey.pem 拷贝到demoCAprivate, 把cacert.pem拷贝到out32dlldemoCAcopy cakey.pem demoCAprivate copy cacert.pem demoCA提醒:这时候,已经有cakey.pem:ca的私钥文件,cacert.pem:ca的自签名根证书,certreq.txt:IIS的证书请求文件,三个文件。3.用CA证书cacert.pem为IIS请求certreq.txt签发证书server.pem openssl ca -in certreq.txt -out server.pem -config d:openssl-0.9.7appsopenssl.cnf4.把server.pem转换成x509格式 openssl x509 -in server.pem -out server.cer提醒:这时候,你又得到了两个文件,一个是server.pem,一个是server.cer。现在把bin下的server.cer复制到c:下。5.将生成的证书server.cer导入到IIS打开IIS,在【默认网站】上单击右键【属性】,在【目录安全性】选项卡中点击【服务器证书】按钮,【下一步】,选择【处理挂起的请求并安装证书】并【下一步】,正常情况下,您已经看到了文本框中就是c:server.cer,如果不是,自己点【浏览】按钮去找并【下一步】,【下一步】,【完成】。回到【目录安全性】选项卡在【安全通信】栏目中单击【编辑】按钮,勾上【要求安全通道(SSL)】,勾上【要求128位加密】,选择【要求客户端证书】,点击【确定】按钮。6.生成客户端证书 openssl req -newkey rsa:1024 -keyout clikey.pem -out clireq.pem -days 365 -config d:openssl-0.9.7appsopenssl.cnf证书信息自己填写,有些内容要与根证书一致。7.CA签发客户端证书 openssl ca -in clireq.pem -out client.crt -config d:openssl-0.9.7appsopenssl.cnf8.将客户端证书转换为pk12格式 openssl pkcs12 -export -clcerts -in client.crt -inkey clikey.pem -out client.p12 -config d:openssl-0.9.7appsopenssl.cnf9.安装信任的根证书把cacert.pem改名为cacert.cer,双击cacert.cer文件,打开证书信息窗口,单击【安装证书】按钮,【下一步】。提醒,下面是最关键的:选择【将所有的证书放入下列存储区】,点击【浏览】按钮[url=file:///C:/Documents][/url] 选择【受信任的根证书颁发机构】,勾选【物理存储区】,选择【受信任的根证书颁发机构】,点【本地计算机】,并点击【确定】,【下一步】,【完成】,【是】,根证书安装完毕!勾选【物理存储区”,选择“受信任的根证书颁发机构”,点“本地计算机”,然后点“确定”。[url=file:///C:/Documents][/url] “clent.crt”的安装也是上面相同的步骤。10.安装客户端证书找到client.p12文件拷贝到本地计算机,然后双击,【下一步】,【下一步】,输入客户端证书的密码并【下一步】,【下一步】,【完成】,【确定】。到此,客户端的证书也已经安完毕。提醒:最好把cacert.cer文件作为受新人的根证书安装到本地。我架设的是提供给内网使用的,所以Common Name直接是内网IP,当然可以是域名,如果导入cacert.cer后,本地计算机就识别https://你的地址是可信任网站,直接由服务器就识别客户端的证书,然后就可以登陆了。如果没有导入cacert.cer根证书,会提示下面的:点“是”继续就可以了。然后还会弹出选择客户端数字证书的提示框。

openssl怎么编译成动态库

1、静态编译./Configure linux-elf-arm -DB_ENDIAN linux:"armeb-linux-gcc -mbig-endian" --prefix=$(pwd)/OpenSSLa、 将openssl-0.9.8d/crypto/bio/bss_file.c中以下代码注释掉//#ifndef _FILE_OFFSET_BITS//#define _FILE_OFFSET_BITS 64//#endif#endif b、 报错没有timeb.h时,在报错的.c文件中#undef TIMEBc、 去掉openssl顶层Makefile中“build_all:”后面的 build_app build_test (我们要的只是两个静态库libcrypto.a和libssl.a),并去掉”DIRS=”后面的app和tests。 make && make install2、动态库1.config: #config no-asm --prefix=../OpenSSL2.改Makefile 1) CC= gcc 改成 CC = armeb-linux-gcc; 2) 删除 CFLAG= 中的 “-march=pentium”; 3) AR=ar $(ARFLAGS) r 改为 AR=armeb-linux-ar $(ARFLAGS) r; 4) ARD=ar $(ARFLAGS) d 改为 ARD=armeb-linux-ar $(ARFLAGS) d; 5)RANLIB= /usr/bin/ranlib 改为 RANLIB= armeb-linux-ranlib;3.编译 #make #make install

如何windows10下安装openssl

安装环境:Windows10专业版+VS2013工具:ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi,下载地址:http://www.activestate.com/ openssl-1.0.1r.tar,下载地址:http://www.openssl.org/1、安装Perl(我安装在C盘,同时我的openssl也解压在C盘) 使用命令行工具,进入C:Perl64eg路径下, 执行“perl example.pl”,若显示“Hello from ActivePerl!”,则说明Perl安装成功。2、设置环境变量 打开我的电脑->属性->高级系统设置->环境变量,找到Path系统变量,点击编辑,添加E:VS 2013VCin;C:Perl64in;c:windowssystem32,其中E:VS 2013VCin是我的VS2013的安装路径,根据情况自己修改。C:Perl64in是Perl的安装路径,根据情况自己修改。

win10怎么运行openssl

1、安装Perl(我安装在C盘,同时我的openssl也解压在C盘)使用命令行工具,进入C:Perl64eg路径下, 执行“perl example.pl”,若显示“Hello from ActivePerl!”,则说明Perl安装成功。2、设置环境变量打开我的电脑->属性->高级系统设置->环境变量,找到Path系统变量,点击编辑,添加E:VS 2013VCin;C:Perl64in;c:windowssystem32,其中E:VS 2013VCin是我的VS2013的安装路径,根据情况自己修改。C:Perl64in是Perl的安装路径,根据情况自己修改。3、用管理员身份打开Visual Studio的开发人员命令提示,并进入openssl的目录(我的放在C盘根目录)4、执行Configure命令(配置编译参数)5、运行msdo_ms命令6、运行nmake -f ms tdll.mak命令进行编译生成OpenSSL动态库此时会编译大概两分钟左右,耐心等待。7、测试使用命令nmake -f ms tdll.mak test,若成功,会出现结果:8、可能使用的命令测试OpenSSL动态库:nmake -f ms tdll.mak test测试OpenSSL静态库:nmake -f ms t.mak test安装OpenSSL动态库:nmake -f ms tdll.mak install安装OpenSSL静态库:nmake -f ms t.mak install清除上次OpenSSL动态库的编译,以便重新编译:nmake -f ms tdll.mak clean清除上次OpenSSL静态库的编译,以便重新编译:nmake -f ms t.mak clean9、总结(使用方法)当建立工程需要使用到openssl库时,在包含目录中添加openssl安装目录的include目录, 在库目录中添加out32dll目录。或者将OpenSSL下的include文件夹、lib文件、dll文件拷出,使用的时候包含进去就行了。

openssl-win32里面bin下面没有openssl.exe怎么回事该怎么用

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

如何使用openssl生成证书

Step 1. Create key (password protected)openssl genrsa -out prvtkey.pem 1024/2038 (with out password protected) openssl genrsa -des3 -out prvtkey.pem 1024/2048 (password protected)这个命令会生成一个1024/2048位的密钥。Step 2. Create certification requestopenssl req -new -key prvtkey.pem -out cert.csropenssl req -new -nodes -key prvtkey.pem -out cert.csr这个命令将会生成一个证书请求,当然,用到了前面生成的密钥prvtkey.pem文件这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。Step 3: Send certificate request to Certification Authority (CA)如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书:openssl req -new -x509 -key prvtkey.pem -out cacert.pem -days 1095这个命令将用上面生成的密钥privkey.pem生成一个数字证书cacert.pemcacert.pem 生成过程见“OpenSSL建立自己的CA”有了privkey.pem和cacert.pem文件后就可以在自己的程序中使用了,比如做一个加密通讯的服务器-------------OpenSSL建立自己的CA(1) 环境准备首先,需要准备一个目录放置CA文件,包括颁发的证书和CRL(Certificate Revoke List)。这里我们选择目录 /var/MyCA。然后我们在/var/MyCA下建立两个目录,certs用来保存我们的CA颁发的所有的证书的副本;private用来保存CA证书的私钥匙。除了生成钥匙,在我们的CA体系中还需要创建三个文件。第一个文件用来跟踪最后一次颁发的证书的序列号,我们把它命名为serial,初始化为01。第二个文件是一个排序数据库,用来跟踪已经颁发的证书。我们把它命名为index.txt,文件内容为空。$ mkdir /var/MyCA$ cd /var/MyCA$ mkdir certs private$ chmod g-rwx,o-rwx private$ echo "01" > serial$ touch index.txt第三个文件是OpenSSL的配置文件,创建起来要棘手点。示例如下:$ touch openssl.cnf文件内容如下:[ ca ]default_ca = myca[ myca ]dir = /var/MyCAcertificate = $dir/cacert.pemdatabase = $dir/index.txtnew_certs_dir = $dir/certsprivate_key = $dir/private/cakey.pemserial = $dir/serialdefault_crl_days= 7default_days = 365default_md = md5policy = myca_policyx509_extensions = certificate_extensions[ myca_policy ]commonName = suppliedstateOrProvinceName = suppliedcountryName = suppliedemailAddress = suppliedorganizationName= suppliedorganizationalUnitName = optional[ certificate_extensions ]basicConstraints= CA:false我们需要告诉OpenSSL配置文件的路径,有两种方法可以达成目的:通过config命令选项;通过环境变量OPENSSL_CONF。这里我们选择环境变量的方式。$ OPENSSL_CONF=/var/MyCA/openssl.cnf"$ export OPENSSL_CONF(2) 生成根证书 (Root Certificate)我们需要一个证书来为自己颁发的证书签名,这个证书可从其他CA获取,或者是自签名的根证书。这里我们生成一个自签名的根证书。首先我们需要往配置文件里面添加一些信息,如下所示,节名和命令行工具的命令req一样。我们把所有必要的信息都写进配置,而不是在命令行输入,这是唯一指定X.509v3扩展的方式,也能让我们对如何创建根证书有个清晰的把握。[ req ]default_bits = 2048default_keyfile = /var/MyCA/private/cakey.pemdefault_md = md5prompt = nodistinguished_name = root_ca_distinguished_namex509_extensions = root_ca_extensions[ root_ca_distinguished_name ]commonName = My Test CAstateOrProvinceName = HZcountryName = CNemailAddress = test@cert.com organizationName = Root Certification Authority[ root_ca_extensions ]basicConstraints = CA:true万事俱备,我们可以生成根证书了。注意设置好环境变量OPENSSL_CONF。$ openssl req -x509 -newkey rsa -out cacert.pem -outform PEM -days 356注:“-days 356“控制有效期限为365天,默认为30天。验证一下我们生成的文件。$ openssl x509 -in cacert.pem -text -noout(3) 给客户颁发证书在给客户颁发证书之前,需要客户提供证书的基本信息。我们另外开启一个终端窗口,使用默认的OpenSSL配置文件(不要让之前的OPENSSL_CONF干扰我们,那个配置是专门用来生成根证书的)。命令和我们生成根证书的类似,都是req,不过需要提供一些额外的信息。如下:$ openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM有两次提示要口令,第一次的口令用来加密私钥匙testkey.pem,第二次口令一般被OpenSSL忽略。结果生成两个文件:testkey.pem,私钥匙;testreq.pem,请求信息,其中包括公钥匙。我们来看看testreq.pem都有哪些信息?$ openssl req -in testreq.pem -text -noout现在,我们可以把testreq.pem提交给我们的CA生成证书了。为了方便起见,我们假定testreq.pem在//var/MyCA/private/中。$ openssl ca -in testreq.pem有三次提示,一次是问你CA的私钥匙密码,两次是确认,输出的结果就是为客户颁发的证书。可以通过batch选项取消命令提示,可通过notext选项取消证书的输出显示。此外,还可以一次给多个客户颁发证书,方法是用 infiles选项替换in选项,不过这个选项必须放在最后,因为此后的任何字符均被处理为文件名称列表。生成的证书放在certs目录,同时index.txt和serial的内容都发生了改变。publicdoubleside=10.0;//去掉static

openssl怎样创建个人证书

一:生成CA证书目前不使用第三方权威机构的CA来认证,自己充当CA的角色。 网上下载一个openssl软件1. 创建私钥 :C:/OpenSSL/bin>openssl genrsa -out ca/ca-key.pem 1024 2.创建证书请求 :C:/OpenSSL/bin>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -----Country Name (2 letter code) [AU]:cnState or Province Name (full name) [Some-State]:zhejiangLocality Name (eg, city) []:hangzhouOrganization Name (eg, company) [Internet Widgits Pty Ltd]:skyvisionOrganizational Unit Name (eg, section) []:testCommon Name (eg, YOUR name) []:rootEmail Address []:sky3.自签署证书 :C:/OpenSSL/bin>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650 4.将证书导出成浏览器支持的.p12格式 : (不需要可以省略)C:/OpenSSL/bin>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12 密码:changeit 二.生成server证书。 1.创建私钥 :C:/OpenSSL/bin>openssl genrsa -out server/server-key.pem 1024 2.创建证书请求 :C:/OpenSSL/bin>openssl req -new -out server/server-req.csr -key server/server-key.pem -----Country Name (2 letter code) [AU]:cnState or Province Name (full name) [Some-State]:zhejiangLocality Name (eg, city) []:hangzhouOrganization Name (eg, company) [Internet Widgits Pty Ltd]:skyvisionOrganizational Unit Name (eg, section) []:testCommon Name (eg, YOUR name) []:192.168.1.246 注释:一定要写服务器所在的ip地址Email Address []:sky3.自签署证书 :C:/OpenSSL/bin>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650 4.将证书导出成浏览器支持的.p12格式 :C:/OpenSSL/bin>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12 密码:changeit三.生成client证书。 1.创建私钥 :C:/OpenSSL/bin>openssl genrsa -out client/client-key.pem 1024 2009-7-17 22:32 回复 yakeqin1位粉丝2楼2.创建证书请求 :C:/OpenSSL/bin>openssl req -new -out client/client-req.csr -key client/client-key.pem-----Country Name (2 letter code) [AU]:cnState or Province Name (full name) [Some-State]:zhejiangLocality Name (eg, city) []:hangzhouOrganization Name (eg, company) [Internet Widgits Pty Ltd]:skyvisionOrganizational Unit Name (eg, section) []:testCommon Name (eg, YOUR name) []:skyEmail Address []:sky 注释:就是登入中心的用户(本来用户名应该是Common Name,但是中山公安的不知道为什么使用的Email Address,其他版本没有测试)Please enter the following "extra" attributesto be sent with your certificate requestA challenge password []:123456An optional company name []:tsing 3.自签署证书 :C:/OpenSSL/bin>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650 4.将证书导出成浏览器支持的.p12格式 :C:/OpenSSL/bin>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12 密码:changeit四.根据ca证书生成jks文件 C:/Java/jdk1.5.0_09/bin > keytool -keystore C:/openssl/bin/jks/truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file C:/openssl/bin/ca/ca-cert.pem 五.配置tomcat ssl修改conf/server.xml。tomcat6中多了SSLEnabled="true"属性。keystorefile, truststorefile设置为你正确的相关路径 xml 代码tomcat 5.5的配置:<Connector port="8443" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" disableUploadTimeout="true"acceptCount="100" scheme="https" secure="true"clientAuth="true" sslProtocol="TLS"keystoreFile="server.p12" keystorePass="changeit" keystoreType="PKCS12"truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS" /> tomcat6.0的配置:<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="true" sslProtocol="TLS"keystoreFile="server.p12" keystorePass="changeit" keystoreType="PKCS12"truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS"/>六.导入证书将ca.p12,client.p12分别导入到IE中去(打开IE->;Internet选项->内容->证书)。 ca.p12导入至受信任的根证书颁发机构,client.p12导入至个人七.验证ssl配置是否正确访问你的应用http://ip:8443/,如果配置正确的话会出现请求你数字证书的对话框。

如何删除osx /usr/bin/openssl 文件

其实,并不需要删除掉系统自带的openssl,巧妙利用一下环境变量设置和homebrew的link功能即可解决好两个版本的openssl和谐共存了。1、在终端确认环境变量$PATH设置中,/usr/local/bin在/usr/bin之前,如下就是符合前置条件要求的环境变量设置;echo $PATH/usr/local/bin:<blablabla>:/usr/bin:/bin如果不是这样,可以根据终端默认shell来永久性重新设置$PATH的值,以确保满足条件1。查看当前用户的默认shell的方法echo $SHELL/bin/bash以上命令输出结果说明当前用户使用的终端shell就是bash,然后就可以修改~/.bash_profile,配置PATH的新值,例如这样:export PATH=/usr/local/bin:$PATH如果用的是zsh,则需要类似修改~/.zshrc。2、让homebrew自动链接安装的homebrew版openssl。brew link openssl如果提示创建软链接失败,则添加参数--forcebrew link openssl --force3、新打开一个终端,这时再输入openssl就会发现已经使用上最新版的openssl啦。openssl versionOpenSSL 1.0.2d 9 Jul 2015/usr/bin/openssl versionOpenSSL 0.9.8zg 14 July 2015

如何使用OPENSSL中的AES算法加密文件

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

如何安装openssl

其实第一步应该先通过vs2008 command prompt进入cmd这个界面,只有这样,才不会编译的时候出现cl找不的错误。

openssl rsa怎么通过私钥生成公钥短

在ubuntu上要使用openssl的话需要先进行安装,命令如下:sudo apt-get install openssl安装完成就可以使用openssl了。首先需要进入openssl的交互界面,在命令行了输入openssl即可;1)生成RSA私钥:genrsa -out rsa_private_key.pem 1024该命令会生成1024位的私钥,生成成功的界面如下:此时我们就可以在当前路径下看到rsa_private_key.pem文件了。2)把RSA私钥转换成PKCS8格式输入命令pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt,并回车得到生成功的结果,这个结果就是PKCS8格式的私钥,如下图:3) 生成RSA公钥输入命令rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回车,得到生成成功的结果,如下图:此时,我们可以看到一个文件名为rsa_public_key.pem的文件,打开它,可以看到-----BEGIN PUBLIC KEY-----开头,-----END PUBLIC KEY-----结尾的没有换行的字符串,这个就是公钥。

使用openssl 创建pkcs12 keystore 为什么会出错

(1)Openssl生成公私钥使用Openssl是为了生成公钥和私钥对,用于外部商户系统和xxx系统之间报文的安全性验证。如果使用者不需要生成公私钥,而是直接对报文进行处理,则参考第四部分,计算摘要及签名值。1. 安装openssl步骤直接点击exe文件。出现需要安装vs2008插件的,直接忽略。 2. 在安装过程中找到OpenSSL相应的安装目录,进入bin目录下找到openssl.exe可执行文件,点击运行。然后分别按顺序输入如下命令:a. genrsa –out private-rsa.key 1024说明:该命令是生成一个没有加密的私钥 genrsa 生成私钥文件,私钥存储在private-rsa.key中,长度为1024。out后面指定输出文件名。 private-rsa.key 为生成的私钥文件,但该文件必须经过处理得到私钥。b. req –new –x509 –key private-rsa.key –days 750 –outpublic-rsa.cer说明:根据private-rsa.key生成证书public-rsa.cer -new 表示新的请求 -509 表示输出的证书结构 750表示证书有效天数 -out public-rsa.cer -out后面表示公钥证书,用于验证数字签名,此公钥证书或者公钥需要提前发送给需要验证本单位或部门数据的接收方。c. pkcs12 –export –name test-alias –in public-rsa.cer–inkey private-rsa.key –out 99bill-rsa.pfx说明:生成PKCS12 格式Keystore 密码前后输入要一致,这个密码在用Keystore生成公私钥过程中会用到。 Public-rsa.cer, private-rsa.key是之前生成的。附1:下述代码是从99bill-rsa.pfx中获取私钥的Java版本代码。因为private-rsa.key中生成的私钥无法直接使用,必须进行一定的处理。代码有几个注意点:文件流初始化路径需要根据自己的实际路径来填写。密码是在第二节中c步骤中的密码,本实例输入的是suning。KeyStorekeyStore = KeyStore.getInstance("PKCS12");FileInputStreamfileInputStream = newFileInputStream("D:/OpenSSL/bin/99bill-rsa.pfx");char[]nPassword = "suning".toCharArray();StringkeyAlias = null;keyStore.load(fileInputStream,nPassword);fileInputStream.close();System.out.println("keystoretype=" + keyStore.getType());Enumeration<String>enumeration = keyStore.aliases();if(enumeration.hasMoreElements()){keyAlias = (String) enumeration.nextElement();System.out.println("alias=[" + keyAlias +"]");}System.out.println("iskey entry=" + keyStore.isKeyEntry(keyAlias));PrivateKeyprikey = (PrivateKey) keyStore.getKey(keyAlias, nPassword);//私钥转成字符串StringprivateStr = Base64.encodeBase64String(prikey.getEncoded()).trim();//生成公钥字符串,还可以通过cer证书生成Certificatecert = keyStore.getCertificate(keyAlias); PublicKeypubkey = cert.getPublicKey();StringpublicStr = Base64.encodeBase64String(pubKey.getEncoded()).trim();注意:1. 所用类的说明:Base64:import org.apache.commons.net.util.Base64;Certificate:import java.security.cert.Certificate;2. 在openssl生成公私钥过程中,用户输入了密码。本例中密码为suning。 1. 摘要及生成方法摘要的生成过程(digest方法全部实现了下述3个过程):1. 根据key对传来的map数据排序;2. 生成a1=b1&a2=b2&a3=b3形式的字符串,排除某些字符串Key值;3. 调用digest方法进行md5编码;以上三步均通过Digest.digest()方法实现:String digest = Digest.digest(Map<String,String> map, String... keys);传递的http报文体body内容如a1=b1&a2=b2&a3=b3形式的字符串,提取出需要加签的字符串并转成map形式。execludeKes是要排除的字段,是一个字符串数组。计算摘要这一步很关键,因为选取的字段要求发送方和接收方必须一致,即发送方对哪些字段计算摘要,那么同样地接收方也必须对相同的字段计算摘要,否则会报6601的错误。 说明:a. Map是存储了计算摘要的字段 b. keys表示排除的字段,不能用于计算摘要的字段,如signature,signAlgorithm2. 公钥证书及字符串转换方法转换的目的:便于存储。(商户直接提供公钥证书也可以,但是对于向验签系统提供公钥字符串的商户,需要用下述代码把公钥转成字符串)1. 公钥/私钥字符串转成公钥/私钥,主要是把字符串转成公钥PublicKeyX509EncodedKeySpec pubKeySpec = newX509EncodedKeySpec(Base64.decodeBase64(strPubKey)); KeyFactorykeyFactory = KeyFactory.getInstance(RSA); PublicKeypubKey = keyFactory.generatePublic(pubKeySpec);2. 公钥或私钥转成Base64字符串:StringpublicStr = Base64.encodeBase64String(pubKey.getEncoded()).trim();3. 公私钥验证方法验证目的:公私钥生成之后,需要验证是否匹配。(之前许多商户生成公私钥混乱,无法确定公私钥是否匹配就添加到验签系统中)。此代码由用户自己用junit验证运行。验证公私钥生成是否正确,如果result为true,则说明公私钥生成正确;否则生成的公私钥有问题,不能使用。String prik1 ="";String pubb ="";String data ="wkk";String digest =Digest.digest(data);PrivateKey privateKey =RSAUtil.getPrivateKey(prik1);String sign =RSAUtil.sign(digest, privateKey);boolean result =RSAUtil.vertiy(digest, sign, RSAUtil.getPublicKey(pubb));System.out.println(result);

求问怎么编译OpenSSL,得到libssl.a 和libcrypto.a,跪求

如何在Windows下编译OpenSSL (VS2010使用VC10的cl编译器)1、安装ActivePerl//初始化的时候,需要用到perl解释器2、使用VS2010下的Visual Studio 2010 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)3、解压缩openssl的包,进入openssl的目录4、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。5、msdo_ms.bat在解压目录下执行msdo_ms.bat命令6、nmake -f ms tdll.mak7、nmake -f ms t.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll (6), out32 (7)里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。。。继续执行nmake -f ms tdll.mak=================================一、编译并安装OpenSSL1、按照标准步骤从源代码编译安装OpenSSL 在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。 下载最新版本的Perl然后安装之。 下载最新版本的OpenSSL 然后将源码解压缩到某个目录(如 C:openssl-0.9.8j)中。 进入openssl源码目录。 cd c:openssl-1.0.1e 以下为参照该目录下的文件INSTALL.W32的执行过程: 运行configure: perl Configure VC-WIN32 创建Makefile文件: msdo_ms.bat 编译动态库: nmake -f ms tdll.mak 编译静态库: nmake -f ms t.mak 测试动态库: nmake -f ms tdll.mak test 测试静态库: nmake -f ms t.mak test 安装动态库: nmake -f ms tdll.mak install 安装静态库: nmake -f ms t.mak install 清除上次动态库的编译,以便重新编译: nmake -f ms tdll.mak clean 清除上次静态库的编译,以便重新编译: nmake -f ms t.mak clean2、如果嫌麻烦,不想编译,可以直接用别人做好的windows OpenSSL 安装包(我用的是0.9.8j版), 可以下载 OpenSSL for Windows,直接安装。P.S. OpenSSL for Windows 的源代码有一些数据类型和VC6的编译器不兼容,我发现的不兼容的数据类型如下:在OpenSSL安装目录的下的include/bn.h文件中,将 #define BN_ULLONG unsigned long long #define BN_ULONG unsigned long long #define BN_LONG long long 分别修改为: #define BN_ULLONG ULONGLONG #define BN_ULONG ULONGLONG #define BN_LONG LONGLONG 否则,会出现编译错误。二、使用OpenSSL 在VC中配置使用以上的函数库: 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。 在"Show directories for:"的"Include files"选项中新增目录"C:opensslinclude"; "Library files"选择中新增目录"C:openssllib"。 然后在需要链接OpenSSL函数库的工程中加入如下两句: #pragma comment(lib, "ssleay32.lib") #pragma comment(lib, "libeay32.lib") 其作用是将OpenSSL所需的库导入工程中。三、问题 我在链接OpenSSL的静态函数库时遇到类似以下的问题: Linking... msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj) ... 这是由于OpenSSL的静态函数库使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。 调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下: 编辑文件 ms t.mak,将该文件第19行 "CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -DOPENSSL_NO_DYNAMIC_ENGINE" 中的"/MD"修改为"/MT"。然后重新编译安装OpenSSL即可。四、附录:在VC中对C/C++ 运行时库不同版本编译指令说明 《在VC中对C/C++ 运行时库不同版本编译指令说明》一文中详细介绍了连接不同版本库的编译指令如下: C Runtime Library: /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Release版本 /MTd LIBCMTD.LIB 多线程静态链接的Debug版本 /clr MSVCMRT.LIB 托管代码和非托管代码混合 /clr:pure MSVCURT.LIB 纯托管代码 C++ Standard Library: /MD MSVCPRT.LIB 多线程DLL的Release版本 /MDd MSVCPRTD.LIB 多线程DLL的Debug版本 /MT LIBCPMT.LIB 多线程静态链接的Release版本 /MTd LIBCPMTD.LIB 多线程静态链接的Debug版本===============================================一 配置编译参数 配置编译参数是进行OpenSSL编译的第一步,这一步可以确定系统的环境,使用什么编译器,默认安装路径以及其他一些选项.步骤如下:1.安装perl:下载ActivePerl-5.8.8.822-MSWin32-x86-280952.msi,然后点击msi文件进行安装!2..配置编译参数:下载openssl-1.0.1e.tar.gz,解压.vc:首先在C:Program FilesMicrosoft Visual Studio .NET 2010VC10in目录下执行vcvars32.bat,然后在解压后的openssl-1.0.1e目录,执行命令配置编译参数:perl Configure VC-WIN32 bc:在解压后的openssl-0.9.8g目录下执行:perl Configure BC-32二 生成批处理文件 在使用configure脚本配置好的编译参数后,就可以使用批处理命令来生成编译脚本.生成编译脚本根据采用编译器的不同通常使用不同的批处理文件.就目前来说,使用vc编译的时候有三种选择:do_ms,do_masm和do_nasm来创建一系列编译脚本文件,即.mak脚本.步骤如下:vc:在openssl-1.0.1e目录下,执行命令来批处理文件:do_ms,do_masm和do_nasmbc:1.下载nsm09839.zip微软汇编编译器,解压,拷贝到c:/windows目录下,修改名称为nasmw.exe;2.在openssl-1.0.1e目录下,执行命令来批处理文件:msdo_nasm三 代码编译vc:完成上面步骤后,可以看到两个关键脚本文件:nt.mak和ntdll.mak.如果我们需要编译后的OpenSSL库是支持动态DLL形式的,那么应该使用ntddll.mak文件进行编译,这样编译完成我们会得到四个与OpenSSL的API库有关文件:ssleay32.lib,libeay32.lib,ssleay32.dll和libeay32.dll.执行的编译命令形式如下:nmake -f ms tdll.mak如果不希望以动态库的形式使用OpenSSL,那么可以使用nt.mak文件进行编译.这样编译后使用OpenSSL的时候,回直接将代码链接进我们的程序里面.执行命令如下:nmake -f ms t.makbc:执行命令来完成代码编译:make -f mscb.mak四 ELSE1) 测试动态库: nmake -f ms tdll.mak test 测试静态库: nmake -f ms t.mak test 安装动态库: nmake -f ms tdll.mak install 安装静态库: nmake -f ms t.mak install 清除上次动态库的编译,以便重新编译: nmake -f ms tdll.mak clean 清除上次静态库的编译,以便重新编译: nmake -f ms t.mak clean2) 使用OpenSSL 在VC中配置使用以上的函数库: 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。 在"Show directories for:"的"Include files"选项中新增目录"C:opensslinclude";"Library files"选择中新增目录"C:openssllib"。 然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

怎么去除开机过程中openSSL

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

openssl 中 engine 怎样实现

为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。1.对称加密算法OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。2.非对称加密算法OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。3.信息摘要算法OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。4.密钥和证书管理密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。首先,OpenSSL实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DER、PEM和BASE64的编解码功能。OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8的编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。5.SSL和TLS协议OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。OpenSSL也实现了TLSv1.0,TLS是SSLv3的标准化版,虽然区别不大,但毕竟有很多细节不尽相同。虽然已经有众多的软件实现了OpenSSL的功能,但是OpenSSL里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识,因为至少存在两点:一是OpenSSL实现的SSL协议是开放源代码的,我们可以追究SSL协议实现的每一个细节;二是OpenSSL实现的SSL协议是纯粹的SSL协议,没有跟其它协议(如HTTP)协议结合在一起,澄清了SSL协议的本来面目。

openssl 证书 及ssh密匙

公钥和私钥都可以用来加密数据,相反用另一个解开。 公钥加密数据,然后私钥解密的情况被称为 加密解密。 私钥加密数据,公钥解密一般被称为 签名和验证签名。 RSA/DSA 一般的公钥不会用明文传输给别人的,正常情况下都会生成一个文件,这个文件就是公钥文件,然后这个文件可以交给其他人用于加密,但是传输过程中如果有人恶意破坏,将你的公钥换成了他的公钥,然后得到公钥的一方加密数据,不是他就可以用他自己的密钥解密看到数据了吗,为了解决这个问题,需要一个公证方来做这个事,任何人都可以找它来确认公钥是谁发的.这就是CA,CA确认公钥的原理也很简单,它将它自己的公钥发布给所有人,然后一个想要发布自己公钥的人可以将自己的公钥和一些身份信息发给CA,CA用自己的密钥进行加密,这里也可以称为签名.然后这个包含了你的公钥和你的信息的文件就可以称为证书文件了.这样一来所有得到一些公钥文件的人,通过CA的公钥解密了文件,如果正常解密那么机密后里面的信息一定是真的,因为加密方只可能是CA,其他人没它的密钥啊.这样你解开公钥文件,看看里面的信息就知道这个是不是那个你需要用来加密的公钥了. 密钥文件的格式用OpenSSL生成的就只有PEM和DER两种格式, PEM的是将密钥用base64编码表示出来的,直接打开你能看到一串的英文字母 DER格式是二进制的密钥文件 参考: 网址 不区分环境,使用以下命令生成新的ssh key: 选择生成文件以及key密码之后,会生成两个文件,其中已 pub 为后缀的为共钥 SSH默认位置为: Windows命令提示符: Windows / GNU / Linux / macOS / PowerShell上的Git Bash: 参考: gitlab.com

php如何安装openssl扩展

php安装openssl扩展的方法:首先在PHP安装包中找到curl扩展目录;然后将config0.m4文件重命名;接着运行phpize;最后编译安装,并设置PHP配置文件php.ini即可。推荐:《PHP视频教程》 关于opensslOpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。安装openssl扩展linux系统篇1.CentOS系统php安装包目录:/data/php5.6.14/PHP安装路径:/usr/local/php/(下面步骤中的具体路径设置,大家根据自己的实际情况设置即可。)在PHP安装包中找到curl扩展目录cd /data/php5.6.14/ext/openssl/config0.m4文件重命名mv config0.m4 config.m4运行phpize/usr/local/php/bin/phpize编译安装:./configure --with-openssl --with-php-config=/usr/local/php/bin/php-configmake && make install这时候openssl.so就已经在/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/目录下生成了设置PHP配置文件php.ini,添加下面一行extension=openssl.so最后重启服务,使用phpinfo()查看PHP-openssl扩展是否安装成功。2.Ubuntu系统执行下面命令:sudo apt-get install opensslsudo apt-get install libcurl4-openssl-devsudo apt-get install libssl-dev最后重启服务即可。Windows系统篇1: 首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;", 如果不存在这行,那么添加extension=php_openssl.dll。2: 讲php文件夹下的: php_openssl.dll, ssleay32.dll, libeay32.dll 3个文件拷贝到 WINDOWSsystem32 文件夹下。注意:如果没有 php_openssl.dll ,去网上下载一个,下载下来有很多个php_openssl,找到你相应php版本下面的php_openssl。3: 重启服务即可

如何在编译OPENSSL时剔除不需要的部分

如何在Windows下编译OpenSSL (VS2010使用VC10的cl编译器)1、安装ActivePerl//初始化的时候,需要用到perl解释器2、使用VS2010下的Visual Studio 2010 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)3、解压缩openssl的包,进入openssl的目录4、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。5、msdo_ms.bat在解压目录下执行msdo_ms.bat命令6、nmake -f ms tdll.mak7、nmake -f ms t.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll (6), out32 (7)里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。。。继续执行nmake -f ms tdll.mak=================================一、编译并安装OpenSSL1、按照标准步骤从源代码编译安装OpenSSL 在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。 下载最新版本的Perl然后安装之。 下载最新版本的OpenSSL 然后将源码解压缩到某个目录(如 C:openssl-0.9.8j)中。 进入openssl源码目录。 cd c:openssl-1.0.1e 以下为参照该目录下的文件INSTALL.W32的执行过程: 运行configure: perl Configure VC-WIN32 创建Makefile文件: msdo_ms.bat 编译动态库: nmake -f ms tdll.mak 编译静态库: nmake -f ms t.mak 测试动态库: nmake -f ms tdll.mak test 测试静态库: nmake -f ms t.mak test 安装动态库: nmake -f ms tdll.mak install 安装静态库: nmake -f ms t.mak install 清除上次动态库的编译,以便重新编译: nmake -f ms tdll.mak clean 清除上次静态库的编译,以便重新编译: nmake -f ms t.mak clean2、如果嫌麻烦,不想编译,可以直接用别人做好的windows OpenSSL 安装包(我用的是0.9.8j版), 可以下载 OpenSSL for Windows,直接安装。P.S. OpenSSL for Windows 的源代码有一些数据类型和VC6的编译器不兼容,我发现的不兼容的数据类型如下:在OpenSSL安装目录的下的include/bn.h文件中,将 #define BN_ULLONG unsigned long long #define BN_ULONG unsigned long long #define BN_LONG long long 分别修改为: #define BN_ULLONG ULONGLONG #define BN_ULONG ULONGLONG #define BN_LONG LONGLONG 否则,会出现编译错误。二、使用OpenSSL 在VC中配置使用以上的函数库: 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。 在"Show directories for:"的"Include files"选项中新增目录"C:opensslinclude"; "Library files"选择中新增目录"C:openssllib"。 然后在需要链接OpenSSL函数库的工程中加入如下两句: #pragma comment(lib, "ssleay32.lib") #pragma comment(lib, "libeay32.lib") 其作用是将OpenSSL所需的库导入工程中。三、问题 我在链接OpenSSL的静态函数库时遇到类似以下的问题: Linking... msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj) ... 这是由于OpenSSL的静态函数库使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。 调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下: 编辑文件 ms t.mak,将该文件第19行 "CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -DOPENSSL_NO_DYNAMIC_ENGINE" 中的"/MD"修改为"/MT"。然后重新编译安装OpenSSL即可。四、附录:在VC中对C/C++ 运行时库不同版本编译指令说明 《在VC中对C/C++ 运行时库不同版本编译指令说明》一文中详细介绍了连接不同版本库的编译指令如下: C Runtime Library: /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Release版本 /MTd LIBCMTD.LIB 多线程静态链接的Debug版本 /clr MSVCMRT.LIB 托管代码和非托管代码混合 /clr:pure MSVCURT.LIB 纯托管代码 C++ Standard Library: /MD MSVCPRT.LIB 多线程DLL的Release版本 /MDd MSVCPRTD.LIB 多线程DLL的Debug版本 /MT LIBCPMT.LIB 多线程静态链接的Release版本 /MTd LIBCPMTD.LIB 多线程静态链接的Debug版本===============================================一 配置编译参数 配置编译参数是进行OpenSSL编译的第一步,这一步可以确定系统的环境,使用什么编译器,默认安装路径以及其他一些选项.步骤如下:1.安装perl:下载ActivePerl-5.8.8.822-MSWin32-x86-280952.msi,然后点击msi文件进行安装!2..配置编译参数:下载openssl-1.0.1e.tar.gz,解压.vc:首先在C:Program FilesMicrosoft Visual Studio .NET 2010VC10in目录下执行vcvars32.bat,然后在解压后的openssl-1.0.1e目录,执行命令配置编译参数:perl Configure VC-WIN32 bc:在解压后的openssl-0.9.8g目录下执行:perl Configure BC-32二 生成批处理文件 在使用configure脚本配置好的编译参数后,就可以使用批处理命令来生成编译脚本.生成编译脚本根据采用编译器的不同通常使用不同的批处理文件.就目前来说,使用vc编译的时候有三种选择:do_ms,do_masm和do_nasm来创建一系列编译脚本文件,即.mak脚本.步骤如下:vc:在openssl-1.0.1e目录下,执行命令来批处理文件:do_ms,do_masm和do_nasmbc:1.下载nsm09839.zip微软汇编编译器,解压,拷贝到c:/windows目录下,修改名称为nasmw.exe;2.在openssl-1.0.1e目录下,执行命令来批处理文件:msdo_nasm三 代码编译vc:完成上面步骤后,可以看到两个关键脚本文件:nt.mak和ntdll.mak.如果我们需要编译后的OpenSSL库是支持动态DLL形式的,那么应该使用ntddll.mak文件进行编译,这样编译完成我们会得到四个与OpenSSL的API库有关文件:ssleay32.lib,libeay32.lib,ssleay32.dll和libeay32.dll.执行的编译命令形式如下:nmake -f ms tdll.mak如果不希望以动态库的形式使用OpenSSL,那么可以使用nt.mak文件进行编译.这样编译后使用OpenSSL的时候,回直接将代码链接进我们的程序里面.执行命令如下:nmake -f ms t.makbc:执行命令来完成代码编译:make -f mscb.mak四 ELSE1) 测试动态库: nmake -f ms tdll.mak test 测试静态库: nmake -f ms t.mak test 安装动态库: nmake -f ms tdll.mak install 安装静态库: nmake -f ms t.mak install 清除上次动态库的编译,以便重新编译: nmake -f ms tdll.mak clean 清除上次静态库的编译,以便重新编译: nmake -f ms t.mak clean2) 使用OpenSSL 在VC中配置使用以上的函数库: 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。 在"Show directories for:"的"Include files"选项中新增目录"C:opensslinclude";"Library files"选择中新增目录"C:openssllib"。 然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

win10怎么运行openssl

  1、安装Perl(我安装在C盘,同时我的openssl也解压在C盘)  使用命令行工具,进入C:Perl64eg路径下, 执行“perl example.pl”,若显示“Hello from ActivePerl!”,则说明Perl安装成功。    2、设置环境变量  打开我的电脑->属性->高级系统设置->环境变量,找到Path系统变量,点击编辑,添加E:VS 2013VCin;C:Perl64in;c:windowssystem32,其中E:VS 2013VCin是我的VS2013的安装路径,根据情况自己修改。C:Perl64in是Perl的安装路径,根据情况自己修改。    3、用管理员身份打开Visual Studio的开发人员命令提示,并进入openssl的目录(我的放在C盘根目录)    4、执行Configure命令(配置编译参数)  5、运行msdo_ms命令    6、运行nmake -f ms tdll.mak命令进行编译生成OpenSSL动态库  此时会编译大概两分钟左右,耐心等待。   7、测试  使用命令nmake -f ms tdll.mak test,若成功,会出现结果:    8、可能使用的命令  测试OpenSSL动态库:nmake -f ms tdll.mak test  测试OpenSSL静态库:nmake -f ms t.mak test  安装OpenSSL动态库:nmake -f ms tdll.mak install  安装OpenSSL静态库:nmake -f ms t.mak install  清除上次OpenSSL动态库的编译,以便重新编译:nmake -f ms tdll.mak clean  清除上次OpenSSL静态库的编译,以便重新编译:nmake -f ms t.mak clean  9、总结(使用方法)  当建立工程需要使用到openssl库时,在包含目录中添加openssl安装目录的include目录, 在库目录中添加out32dll目录。  或者将OpenSSL下的include文件夹、lib文件、dll文件拷出,使用的时候包含进去就行了。  

如何在Windows下编译OpenSSL

笔者按照一定的步骤成功了编译了OpenSSL库,步骤如下:1)在微软网站下载并安装VS Studio,笔者写博客之时的最新版本是2013,连接如下2)从下载并安装ActivePerl。3)从下载并安装Nasm汇编器。4)从下载并安装OpenSSL的最新Release包。笔者写博客之时,最新的OpenSSL包是:4459777 Feb 11 16:34:23 2013 openssl-1.0.1e.tar.gz (MD5) (SHA1) (PGP sign) [LATEST]这里需要强调的是,读者未必需要完全按照笔者的步骤编译OpenSSL库,这里的部分次序是可以互换的。在完成所有上述5步后,我们就可以解压缩OpenSSL包,在对它进行修改便可以编译了。在解压缩后,所有的源代码放在openssl- 1.0.1e目录下,在此目录下,有两个文件INSTALL.W32, INSTALL.W64需要被关注。打开其中的任何一个文件,你会看到如何编译OpenSSL的各个步骤。这里,笔者将会再啰嗦一下。1)打开VS Studio命令行工具,如图1所示。若编译64位OpenSSL库,请打开Visual Studio x64 Win64 Command Prompt,反之亦然。图12)配置编译文件及安装目录;编译Win32:perl Configure VC-WIN32 --prefix=c:someopenssldir编译Win64:perl Configure VC-WIN64A“c:someopenssldir”目录可以改成任何你希望的安装目录3)搭建编译环境:msdo_nasmmsdo_ms对于64位编译,将msdo_ms替换成msdo_win64a4)编译OpenSSLnmake -f ms tdll.mak5)安装编译生成的库到“c:someopenssldir”nmake -f ms tdll.mak install执行后搞定了吗?若没有,是不是遗忘的中间的某个步骤?

openssl 生成ssl证书 能不能用

openssl生成的ssl证书一般只适合用来测试或学习,属于自签名SSL证书。给正规网站安装SSL证书建议去权威的CA机构申请SSL证书。

安装OpenSSL出错,求大神

使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)、解压缩openssl的包,进入openssl的目录、perl configure VC-WIN32尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。、msdo_ms在解压目录下执行msdo_ms命令、nmake -f ms tdll.mak编译后在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件注意:在运行第五步时,cl编译器会抱怨说.cryptodesenc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:warning treated as error - no object file generated/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。

如何使用openssl生成RSA公钥和私钥对 / 蓝讯

  在Linux环境下,可安装OPENSSL工具包(以ubuntu为例,执行sudo apt-get install openssl)。  在Windows环境下,打开OPENSSL安装目录bin文件下面的openssl.exe。在Linux环境下,直接在终端中运行openssl。  1)生成RSA私钥:  genrsa -out rsa_private_key.pem 1024  该命令会生成1024位的私钥,生成成功的界面如下:  如何使用openssl生成RSA公钥和私钥对  此时我们就可以在当前路径下看到rsa_private_key.pem文件了。  2)把RSA私钥转换成PKCS8格式  输入命令pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt,并回车  得到生成功的结果,这个结果就是PKCS8格式的私钥,如下图:  如何使用openssl生成RSA公钥和私钥对  3) 生成RSA公钥  输入命令rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回车,  得到生成成功的结果,如下图:  如何使用openssl生成RSA公钥和私钥对  此时,我们可以看到一个文件名为rsa_public_key.pem的文件,打开它,可以看到-----BEGIN PUBLIC KEY-----开头,  -----END PUBLIC KEY-----结尾的没有换行的字符串,这个就是公钥。

求助,windows 2003 服务器 如何安装openssl

您好!安装SSL证书主要将SSL证书配置到服务器环境。安装教程:网页链接目前全球服务器环境主要分为4个类型:Apache、IIS、Nginx、Tomcat

使用openssl命令从.p12文件中提取证书和私钥。

" > openssl pkcs12 -in PATH_TO_YOUR_P12 -nocerts -out key.pem -nodes " "$> openssl rsa -in key.pem -out key.pem" .pem 是 base64 编码的,直接文本打开即可看到证书及密钥

OpenSSL 是什么意思,做什么用的?

open的意思为开启 ssl是一种加密协议 ,在一起就是使用ssl加密协议,一般常见与邮箱设置

OpenSSL之ASN1用法

ASN.1 – Abstract Syntax Notation dot one,抽象记法1,在大部分的书写场合会简写为ASN1。它描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。 ASN1有很多实现版本,OpenSSL主要采用DER格式。 本文假设你已经安装好了OpenSSL,并且持有一份1.1.1的源码。 ASN1相关的头文件为asn1.h、asn1t.h、源文件在crypto/asn1目录中。 这个结构负责管理ANS1大多数数据类型的内存组织方式,字段含义: length —— 管理的数据长度。 type —— 管理的数据类型。 data —— 数据指针。 flags —— 标志位,跟具体数据类型有关。 管理的数据类型: 主要数据类型的取值: 其它一些类型的定义: 在OpenSSL的实现中,每个数据类型都有一个ITEM结构,它负责定义这个数据类型的编解码规则。 相关字段含义如下: itype —— 定义ITEM自身的类型,取值: utype —— 定义管理的数据类型,取值前面有说明,例如V_ASN1_INTEGER。 templates —— 数据处理方法模板数组指针。 tcount —— 模板数组的个数。 funcs —— 回调方法指针。 size —— 负责数据结构的大小。 sname —— 指向数据结构的名称。 前面讲到,对每个数据类型来说,OpenSSL需要一个对应的ITEM结构,下面这几个宏为每个数据类型声明ITEM结构,同时也声明了相应的助记函数。如下: 拿 DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) 来说,宏定义展开形式为: 还有几个宏负责为数据类型实现相应的助记函数。如下: 拿 IMPLEMENT_ASN1_ITEM(ASN1_INTEGER) 来说,其展开形式为: 可以看到,展开形式所实现的助记函数实际上是对ASN1内部几个函数的封装调用,对提供上层数据类型与内部类型的转换,其中ASN1_VALUE是类型上下转换的纽带,它是个万能指针: typedef struct ASN1_VALUE_st ASN1_VALUE; 在asn1.h中,对基本数据类型声明了助记函数: 可是我暂时还没有找到对基本数据类型助记函数的宏实现。 OpenSSL的ASN1编码处理依赖ASN1_ITEM对象,对基本类型来说,OpenSSL本身已经做了声明和初使化,所以可以直接以相关函数中使用。然而对于自定义结构体,需要开发者来定义ASN1_ITEM对象和规则,有一些宏可以提供帮助,摘录部分如下: 在ASN1_ITEM结构中,ASN1_TEMPLATE的结构定义如下: 主要字段含义: offset —— 字段在父结构中的偏移。 field_name —— 字段名称。 item —— 指向字段对应结构类型的ASN1_ITEM对象。 举例定义如下的自定义结构: 将宏展开,为: ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); 根据ITEM对象创建和释放对应的数据类型。 ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, long len, const ASN1_ITEM *it); 根据ITEM对象将DER编码转换为二进制结构。 成功返回有效指针,成功返回NULL。 如果val为NULL,将内部分配内存,但必须由外部使用者释放。 其内部实现为: 可以看到内部做了为val传入NULL的兼容性处理。 int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); 根据ITEM对象将二进制结构转换为DER编码。 成功返回DER编码长度,失败返回负数。 如果*out为NULL,将内部分配内存,但内存必须由外部使用者释放。若**out为NULL,将仅返回长度,这用于试探长度的场景。 其内部实现为: 可以看到内部做了为out和*out传入NULL的兼容性处理。在out传入NULL的情况下,无法接收缓冲区,只能返回长度。 void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); 根据ITEM对象将DER编码转换为二进制结构,输入的DER编码来源于BIO对象。 成功返回有效指针,成功返回NULL。 事实上,本函数是对ASN1_item_d2i()的封装调用。 其内部实现为: void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); ASN1_item_d2i_bio()的FILE版本。 ASN1_item_d2i_bio()和ASN1_item_d2i_fp() 这两个函数关于输出参数x的类型定义是不恰当的,后面讲的 ASN1_d2i_bio()和ASN1_d2i_bio() 有修复这个问题。 int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); 根据ITEM对象将二进制结构转换为DER编码,输出到BIO对象中。 成功返回DER编码长度,失败返回负数。 如果*out为NULL,将内部分配内存,但内存必须由外部使用者释放。事实上,本函数是对ASN1_item_i2d()的封装调用。 其内部实现为: int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); ASN1_item_i2d_bio()的FILE版本。 其实上,以上函数由于直接需要ASN1_ITEM做为参数,很少在程序中直接使用,而是由DECLARE_ASN1_FUNCTIONS宏声明的变体,或者下面介绍的函数代替。 void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); 从BIO对象读取DER编码数据,转换为对应的二进制结构,具体的转换依赖d2i函数指针。 成功返回有效指针,失改返回NULL。 其内部实现为: void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); ASN1_d2i_bio()的FILE版本。 int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); 将二进制结构转换为DER编码,输出到BIO中,具体的转换依赖i2d函数指针。 成功返回1,失败返回0。 其内部实现为: int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); ASN1_i2d_bio() 的FILE版本。 上面d2i_of_void 和 i2d_of_void 函数的签名为: 通常为数据类型的转换助记函数。 int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); 将v值设置到a中。成功返回1,失败返回0。 long ASN1_INTEGER_get(const ASN1_INTEGER *a); 获取a中存储的整数值。失败返回-1。 int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); 将v值设置到a中。成功返回1,失败返回0。 long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); 获取a中存储的枚举值。失败返回-1。 int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); 将data和len指向的串值设置到str中。成功返回1,失败返回0。 unsigned char *ASN1_STRING_data(ASN1_STRING *x); 获取x的字符串首指针。成功返回有效指针,失败返回NULL。 int ASN1_STRING_length(const ASN1_STRING *x); 获取x的字符串长度。 int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); 将ASN1_INTEGER转换为ASC码,输出到bp中。成功返回1,失败返回0。 int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); 将bp中的ASC码转换为ASN1_INTEGER,buf存放BIO的ASC码。成功返回1,失败返回0。 int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); 将ASN1_ENUMERATED转换为ASC码,输出到bp中。成功返回1,失败返回0。 int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); 将bp中的ASC码转换为ASN1_ENUMERATED,buf存放BIO的ASC码。成功返回1,失败返回0。 int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); 将a中的字符串转换为ASC码输出到bp中,type不起作用。返回转换的ASC字符串长度。 int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); 将bp中的ASC码转换为ASN1_STRING,buf存放BIO的ASC码。成功返回1,失败返回0。 ASN1_OBJECT *ASN1_OBJECT_new(void); 分配OID对象。 void ASN1_OBJECT_free(ASN1_OBJECT *a); 释放OID对象。 OID的编码规为:第一个八位组采用公式:first_arc* 40+second_arc。如果一个数大于127,就采用多个8位表示,最高位用1表示后续还有octet,用0表示后续没有。成功返回OID编码的字节数。 int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); 计算由ASC字符串指定的OID的DER编码。返回编码的字节数。所果事先需要知道编码的长度来分配内存,可以设置out为NULL,olen为0,获取编码字节长度,根据该长度再去分配内存。 ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long length); 将DER编码转换为OID对象。成功返回有效指针。 int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp); 将OID对象换转为DER编码。返回DER编码的长度。 int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); 将DER编码转换为ASC字符串,结果输出到bp中。返回ASC字符串长度。 下面这个例子测试了很多函数的用法,请自行放开注释并测试。

怎么看openssl版本

openssl支持ecdsa吗,服务器的openssl版本是0.9.8e,我包含头文件#include <openssl/ecdsa.hopenssl支持ecdsa吗,服务器的openssl版本是0.9.8e,我包含头文件#include <openssl/ecdsa.h>,编译器报错,没有这个文件。这个命令是安装还是设置啊?我看看怎么象设置呢?这个软件不要先安装的吗?直接就能用吗?是不是要先安装的啊如果是要先安装的话,那可能是缺少zlib的库文件吧我没有装个这个软件,不过我怎么看你的问题都象是没有安装软件啊答案补充:我看了这个网址了,估计是lz你没有安装全zlib的库文件,你可以试试先安装zlib的库文件我又发现一个问题,lz你用的是RH9.0吗?如果不是的话,那可能是会出错的,因为不同版本的linux安装环境也是不同的

OpenSSL的编译和使用

个人博客地址: https://blog.yookingh.cn 该文章地址: https://blog.yookingh.cn/dev/201215-openssl.html 从NDK r19开始,由于gcc兼容clang的编译方式有问题,该版本已经移除了相关gcc文件,所以用老方法交叉编译Openssl的时候,会提示找不到gcc文件。 参考: https://blog.csdn.net/zoujin6649 build-android-single.sh 脚本文件及注释如下 执行脚本 修改脚本为 循环编译 ,编译所有需要的文件 build-android-all.sh 脚本文件内容如下 执行脚本方法同上,如为第一次执行(即没有Makefile文件),仍需要执行 ./config 循环编译无需执行 make clean 参考: https://blog.csdn.net/iamadk Python 脚本内容 创建编译执行脚本 执行编译脚本同r15,第一次需要执行 ./config 生成Makefile,第二次或以上需要清除make记录即 make clean ,接下来依旧是创建 循环编译 脚本

如何安装openssl 生成证书

(1)Openssl生成公私钥使用Openssl是为了生成公钥和私钥对,用于外部商户系统和xxx系统之间报文的安全性验证。如果使用者不需要生成公私钥,而是直接对报文进行处理,则参考第四部分,计算摘要及签名值。1. 安装openssl步骤直接点击exe文件。出现需要安装vs2008插件的,直接忽略。 2. 在安装过程中找到OpenSSL相应的安装目录,进入bin目录下找到openssl.exe可执行文件,点击运行。然后分别按顺序输入如下命令:a. genrsa –out private-rsa.key 1024说明:该命令是生成一个没有加密的私钥 genrsa 生成私钥文件,私钥存储在private-rsa.key中,长度为1024。out后面指定输出文件名。 private-rsa.key 为生成的私钥文件,但该文件必须经过处理得到私钥。b. req –new –x509 –key private-rsa.key –days 750 –outpublic-rsa.cer说明:根据private-rsa.key生成证书public-rsa.cer -new 表示新的请求 -509 表示输出的证书结构 750表示证书有效天数 -out public-rsa.cer -out后面表示公钥证书,用于验证数字签名,此公钥证书或者公钥需要提前发送给需要验证本单位或部门数据的接收方。c. pkcs12 –export –name test-alias –in public-rsa.cer–inkey private-rsa.key –out 99bill-rsa.pfx说明:生成PKCS12 格式Keystore 密码前后输入要一致,这个密码在用Keystore生成公私钥过程中会用到。 Public-rsa.cer, private-rsa.key是之前生成的。附1:下述代码是从99bill-rsa.pfx中获取私钥的Java版本代码。因为private-rsa.key中生成的私钥无法直接使用,必须进行一定的处理。代码有几个注意点:文件流初始化路径需要根据自己的实际路径来填写。密码是在第二节中c步骤中的密码,本实例输入的是suning。KeyStorekeyStore = KeyStore.getInstance("PKCS12");FileInputStreamfileInputStream = newFileInputStream("D:/OpenSSL/bin/99bill-rsa.pfx");char[]nPassword = "suning".toCharArray();StringkeyAlias = null;keyStore.load(fileInputStream,nPassword);fileInputStream.close();System.out.println("keystoretype=" + keyStore.getType());Enumeration<String>enumeration = keyStore.aliases();if(enumeration.hasMoreElements()){keyAlias = (String) enumeration.nextElement();System.out.println("alias=[" + keyAlias +"]");}System.out.println("iskey entry=" + keyStore.isKeyEntry(keyAlias));PrivateKeyprikey = (PrivateKey) keyStore.getKey(keyAlias, nPassword);//私钥转成字符串StringprivateStr = Base64.encodeBase64String(prikey.getEncoded()).trim();//生成公钥字符串,还可以通过cer证书生成Certificatecert = keyStore.getCertificate(keyAlias); PublicKeypubkey = cert.getPublicKey();StringpublicStr = Base64.encodeBase64String(pubKey.getEncoded()).trim();注意:1. 所用类的说明:Base64:import org.apache.commons.net.util.Base64;Certificate:import java.security.cert.Certificate;2. 在openssl生成公私钥过程中,用户输入了密码。本例中密码为suning。 1. 摘要及生成方法摘要的生成过程(digest方法全部实现了下述3个过程):1. 根据key对传来的map数据排序;2. 生成a1=b1&a2=b2&a3=b3形式的字符串,排除某些字符串Key值;3. 调用digest方法进行md5编码;以上三步均通过Digest.digest()方法实现:String digest = Digest.digest(Map<String,String> map, String... keys);传递的http报文体body内容如a1=b1&a2=b2&a3=b3形式的字符串,提取出需要加签的字符串并转成map形式。execludeKes是要排除的字段,是一个字符串数组。计算摘要这一步很关键,因为选取的字段要求发送方和接收方必须一致,即发送方对哪些字段计算摘要,那么同样地接收方也必须对相同的字段计算摘要,否则会报6601的错误。 说明:a. Map是存储了计算摘要的字段 b. keys表示排除的字段,不能用于计算摘要的字段,如signature,signAlgorithm2. 公钥证书及字符串转换方法转换的目的:便于存储。(商户直接提供公钥证书也可以,但是对于向验签系统提供公钥字符串的商户,需要用下述代码把公钥转成字符串)1. 公钥/私钥字符串转成公钥/私钥,主要是把字符串转成公钥PublicKeyX509EncodedKeySpec pubKeySpec = newX509EncodedKeySpec(Base64.decodeBase64(strPubKey)); KeyFactorykeyFactory = KeyFactory.getInstance(RSA); PublicKeypubKey = keyFactory.generatePublic(pubKeySpec);2. 公钥或私钥转成Base64字符串:StringpublicStr = Base64.encodeBase64String(pubKey.getEncoded()).trim();3. 公私钥验证方法验证目的:公私钥生成之后,需要验证是否匹配。(之前许多商户生成公私钥混乱,无法确定公私钥是否匹配就添加到验签系统中)。此代码由用户自己用junit验证运行。验证公私钥生成是否正确,如果result为true,则说明公私钥生成正确;否则生成的公私钥有问题,不能使用。String prik1 ="";String pubb ="";String data ="wkk";String digest =Digest.digest(data);PrivateKey privateKey =RSAUtil.getPrivateKey(prik1);String sign =RSAUtil.sign(digest, privateKey);boolean result =RSAUtil.vertiy(digest, sign, RSAUtil.getPublicKey(pubb));System.out.println(result);

openssl不是内部或外部命令,也不是可运行的程序和批处理文件.该怎么解决?

编译了吗?

linux-openssl命令行

title: linux-openssl date: 2020-09-16 11:02:15 categories: {% note info %} OpenSSL是一个健壮的、商业级的、功能齐全的开源工具包,用于传输层安全(TLS)协议,以前称为安全套接字层(Secure Sockets Layer, SSL)协议。协议实现基于全强度通用密码库,也可以单独使用。 openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能。 <span style="color:red;">项目地址</span> <span style="color:red;">官方网址</span> <span style="color:red;">手册</span> {% endnote %} {% tabs configtab, 1 %} 对称算法使用一个密钥。给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同。解密时,使用读密钥与加密密钥相同。 ECBCBCCFBOFB 摘要算法是一种能产生特殊输出格式的算法,这种算法的特点是:无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要,被摘要的数据内容与原数据有密切联系,只要原数据稍有改变,输出的“摘要”便完全不同,因此,基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证。 如今常用的“消息摘要”算法经历了多年验证发展而保留下来的算法已经不多,这其中包括MD2、MD4、MD5、SHA、SHA-1/256/383/512等。 常用的摘要算法主要有MD5和SHA1。MD5的输出结果为16字节,sha1的输出结果为20字节。 在公钥密码系统中,加密和解密使用的是不同的密钥,这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。这使得通信双方无需事先交换密钥就可进行保密通信。其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。 主要的公钥算法有:RSA、DSA、DH和ECC。 Openssl中大量用到了回调函数。回调函数一般定义在数据结构中,是一个函数指针。通过回调函数,客户可以自行编写函数,让openssl函数来调用它,即用户调用openssl提供的函数,openssl函数再回调用户提供的函数。这样方便了用户对openssl函数操作的控制。在openssl实现函数中,它一般会实现一个默认的函数来进行处理,如果用户不设置回调函数,则采用它默认的函数。 {% endtabs %}

OpenSSL之内存用法

用户在使用内存时,容易犯的错误就是内存泄露。当用户调用内存分配和释放函数时,查找内存泄露比较麻烦。OpenSSL提供了内置的内存分配/释放函数。如果用户完全调用OpenSSL的内存分配和释放函数,可以方便的找到内存泄露点。OpenSSL分配内存时,在其内部维护一个内存分配哈希表,用于存放已经分配但未释放的内存信息。当用户申请内存分配时,在哈希表中添加此项信息,内存释放时删除该信息。当用户通过OpenSSL函数查找内存泄露点时,只需查询该哈希表即可。用户通过OpenSSL回调函数还能处理那些泄露的内存。 本文假设你已经安装好了OpenSSL,并且持有一份1.1.1的源码。 内存相关的头文件为crypto.h、源文件在crypto目录中,文件名模式为mem*.c。 这个结构定义了内存块的分配信息。主要字段含义: addr —— 分配的内存地址。 num —— 分配的内存大小。 file —— 分配内存的文件名。 file —— 分配内存的行号。 threadid —— 分配内存的线程ID。 在1.1.1中,大多数的数据结构已经不再向使用者开放,从封装的角度来看,这是更合理的。如果你在头文件中找不到结构定义,不妨去源码中搜一搜。 int CRYPTO_set_mem_functions( void ( m) (size_t, const char *, int), void ( r) (void *, size_t, const char , int), void ( f) (void *, const char , int)); 成功返回1,失败返回0。 void CRYPTO_get_mem_functions( void ( m) (size_t, const char , int), void ( r) (void , size_t, const char , int), void ( f) (void *, const char *, int)); 这两个函数用于设置和读取与内存分配和释放相关的三个函数,这三个函数默认分别为: static void ( malloc_impl)(size_t, const char *, int) = CRYPTO_malloc; static void ( realloc_impl)(void *, size_t, const char , int) = CRYPTO_realloc; static void ( free_impl)(void *, const char *, int) = CRYPTO_free; 这两个函数只允许在内存分配前即初使化时调用。 int CRYPTO_set_mem_debug(int flag); 设置是否开启内存调试。取值1或0,1表示打开。 成功返回1,失败返回0。 只允许在内存分配前即初使化时调用。 void *CRYPTO_malloc(size_t num, const char *file, int line); void *CRYPTO_zalloc(size_t num, const char *file, int line); void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); CRYPTO_free(void *ptr, const char *file, int line); 这几个函数用于分配和释放内存。 是否记录内存与CRYPTO_set_mem_debug()的开关有关。 int CRYPTO_mem_ctrl(int mode); 这个函数用于设置是否开启内存记录模式,参数取值为: # define CRYPTO_MEM_CHECK_OFF 0x0 # define CRYPTO_MEM_CHECK_ON 0x1 返回旧模式。 注:我没有在头文件中看到像老版函数CRYPTO_is_mem_check_on()一样可以查询当前开关状态的用法,但是通过查看源码,发现可以对CRYPTO_mem_ctrl()传递一个不存在的类型(比如-1)使其返回当前状态。 int CRYPTO_mem_leaks_cb(int (*cb) (const char *str, size_t len, void *u), void *u); 遍历记录的内存,用于打印内存泄露信息。 返回是否有内存汇露。分别取值1和0。 int CRYPTO_mem_leaks(BIO *bio); 打印内存泄露信息,输出到BIO中。 返回是否有内存汇露。分别取值1和0。 int CRYPTO_mem_leaks_fp(FILE *); CRYPTO_mem_leaks()的FILE版本。 由于OpenSSL内部涉及地数据结构众多,如果采用原始的内存操作函数,因为涉及到文件名和行号会比较麻烦。因此,OpenSSL定义了一组宏进行包装,方便使用者进行调用。定义如下: 下面这个例子演示了使用OpenSSl内存分配API进行操作。同时还用到了placement new()的用法,演示如何在openssl的内存分配串上创建c++对象。 如果在编译过程中出现下面这个错误: testmem.cpp:40:42: 错误:‘CRYPTO_mem_leaks_cb"在此作用域中尚未声明 CRYPTO_mem_leaks_cb(memleak_cb, "aaa"); 解决办法是开启debug调试编译,命令如下: ./config --prefix=/usr/local/openssl enable-crypto-mdebug enable-crypto-mdebug-backtrace 输出: old switch:0 @SNode::SNode name:[abc] age:[18] @SNode::~SNode name:[abc] age:[0] leak info:[[02:21:40] 1 file=testmem.cpp, line=46, thread=140607514695488, number=36, address=0x204f090 ] ##> ./testmem() [0x4044e3] ##> ./testmem(CRYPTO_malloc+0xa3) [0x4035e3] ##> ./testmem() [0x40329c] ##> /lib64/libc.so.6(__libc_start_main+0xf5) [0x7fe1bbb77555] ##> ./testmem() [0x4030f3] leak info:[36 bytes leaked in 1 chunks ]
 首页 上一页  80 81 82 83 84 85 86 87 88 89 90  下一页  尾页