openssl命令中文版
openssl-指令verify用法:openssl verify 【-CApath directory】【-CAfile file】【-purpose purpose】【-untrusted file】【-help】【-issuer_checks】【-verbose】【-】【certificates】说明:证书验证工具。
选项-CApath directory我们信任的CA的证书存放目录。
这些证书的名称应该是这样的格式:xxxxxxxx.0( xxxxxxxx代表证书的哈希值。
参看x509指令的-hash)你也可以在目录里touch一些这样格式文件名的文件,符号连接到真正的证书。
那么这个xxxxxxxx我怎么知道怎么得到?x509指令有说明。
其实这样子就可以了:openssl x509 -hash -in server.crt-CAfile file我们信任的CA的证书,里面可以有多个CA的证书。
-untrusted file我们不信任的CA的证书。
-purpose purpose证书的用途。
如果这个option没有设置,那么不会对证书的CA链进行验证。
现在这个option的参数有以下几个:sslclinetsslservernssslserversmimesignsmimeencrypt等下会详细解释的。
-help打印帮助信息。
-verbose打印出详细的操作信息。
-issuer_checks打印出我们验证的证书的签发CA的证书的之间的联系。
要一次验证多个证书,把那些证书名都写在后面就好了。
验证操作解释:S/MIME和本指令使用完全相同的函数进行验证。
我们进行的验证和真正的验证有个根本的区别:在我们对整个证书链进行验证的时候,即使中途有问题,我们也会验证到最后,而真实的验证一旦有一个环节出问题,那么整个验证过程就告吹。
验证操作包括几个独立的步骤。
首先建立证书链,从我们目前的证书为基础,一直上溯到Root CA的证书.如果中间有任何问题,比如找不到某个证书的颁发者的证书,那么这个步骤就挂。
有任何一个证书是字签名的,就被认为是Root CA的证书。
寻找一个证书的颁发CA也包过几个步骤。
在openssl0.9.5a之前的版本,如果一个证书的颁发者和另一个证书的拥有着相同,就认为后一个证书的拥有者就是前一个证书的签名CA.openssl0.9.6及其以后的版本中,即使上一个条件成立,还要进行更多步骤的检验。
包括验证系列号等。
到底有哪几个我也没看明白。
得到CA的名称之后首先去看看是否是不信任的CA, 如果不是,那么才去看看是否是信任的CA. 尤其是Root CA, 更是必须是在信任CA列表里面。
现在得到链条上所有CA的名称和证书了,下一步是去检查第一个证书的用途是否和签发时候批准的一样。
其他的证书则必须都是作为CA证书而颁发的。
证书的用途在x509指令里会详细解释。
过了第二步,现在就是检查对Root CA的信任了。
可能Root CA也是每个都负责不同领域的证书签发。
缺省的认为任何一个Root CA都是对任何用途的证书有签发权。
最后一步,检查整条证书链的合法性。
比如是否有任何一个证书过期了?签名是否是正确的?是否真的是由该证书的颁发者签名的?任何一步出问题,所有该证书值得怀疑,否则,证书检验通过。
如果验证操作有问题了,那么打印出来的结果可能会让人有点模糊。
一般如果出问题的话,会有类似这样子的结果打印出来:server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)error 24 at 1 depth lookup:invalid CA certificate第一行说明哪个证书出问题,后面是其拥有者的名字,包括几个字段。
第二行说明错误号,验证出错在第几层的证书,以及错误描述。
下面是错误号及其描述的详细说明,注意,有的错误虽然有定义,但真正使用的时候永远不会出现。
用unused标志.0 X509_V_OK验证操作没有问题2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT找不到该证书的颁发CA的证书。
3 X509_V_ERR_UNABLE_TO_GET_CRL (unused)找不到和该证书相关的CRL4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE无法解开证书里的签名。
5 X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE (unused)无法解开CRLs的签名。
6 X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY无法得到证书里的公共密钥信息。
7 X509_V_ERR_CERT_SIGNATURE_FAILURE证书签名无效8 X509_V_ERR_CRL_SIGNATURE_FAILURE (unused)证书相关的CRL签名无效9 X509_V_ERR_CERT_NOT_YET_VALID证书还没有到有效开始时间10 X509_V_ERR_CRL_NOT_YET_VALID (unused)与证书相关的CRL还没有到有效开始时间11 X509_V_ERR_CERT_HAS_EXPIRED证书过期12 X509_V_ERR_CRL_HAS_EXPIRED (unused)与证书相关的CRL过期13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD证书的notBefore字段格式不对,就是说那个时间是非法格式。
14 X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD证书的notAfter字段格式不对,就是说那个时间是非法格式。
15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD (unused)CRL的lastUpdate字段格式不对。
16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD (unused)CRL的nextUpdate字段格式不对17 X509_V_ERR_OUT_OF_MEM操作时候内存不够。
这和证书本身没有关系。
18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT需要验证的第一个证书就是字签名证书,而且不在信任CA证书列表中。
19 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN可以建立证书链,但在本地找不到他们的根??: self signed certificate in certificate chainthe certificate chain could be built up using the untrusted certificates but the root could not be found locally.20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY有一个证书的签发CA的证书找不到。
这说明可能是你的Root CA的证书列表不齐全。
21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE证书链只有一个item, 但又不是字签名的证书。
22 X509_V_ERR_CERT_CHAIN_TOO_LONG (unused)证书链太长。
23 X509_V_ERR_CERT_REVOKED (unused)证书已经被CA宣布收回。
24 X509_V_ERR_INVALID_CA某CA的证书无效。
25 X509_V_ERR_PATH_LENGTH_EXCEEDED参数basicConstraints pathlentgh超过规定长度26 X509_V_ERR_INVALID_PURPOSE提供的证书不能用于请求的用途。
比如链条中某个证书应该是用来做CA证书的,但证书里面的该字段说明该证书不是用做CA 证书的,就是这样子的情况。
27 X509_V_ERR_CERT_UNTRUSTEDRoot CA的证书如果用在请求的用途是不被信任的。
28 X509_V_ERR_CERT_REJECTEDCA的证书根本不可以用做请求的用途。
29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH证书颁发者名称和其CA拥有者名称不相同。
-issuer_checks被set的时候可以检验出来。
30 X509_V_ERR_AKID_SKID_MISMATCH证书的密钥标志和其颁发CA为其指定的密钥标志不同.31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH证书系列号与起颁发CA为其指定的系列号不同。
32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN某CA的证书用途不包括为其他证书签名。
50 X509_V_ERR_APPLICATION_VERIFICATION应用程序验证出错。
openssl-指令asn1parse用法:openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename][-noout] [-offset number] [-length number] [-i] [- structure filename][-strparse offset]用途:一个诊断工具,可以对ASN1结构的东东进行分析。
ASN1是什么?一个用来描述对象的标准。
要解释的话,文章可以比解释openssl结构的文章更长。
有兴趣的话自己去网络上找来看吧。
-inform DER|PEM|TXT输入的格式,DER是二进制格式,PEM是base64编码格式,TXT不用解释了吧-in filename输入文件的名称,缺省为标准输入。
-out filename输入文件的名称,输入一般都是DER数据。
如果没这个项,就没有东西输入咯。
该项一般都要和-strparse一起使用。
-noout不打印参数编码的版本信息。
-offset number从文件的那里开始分析,看到offset就应该知道是什么意思了吧。
-length number一共分析输入文件的长度的多少,缺省是一直分析到文件结束。
-i根据输出的数据自动缩进。
- structure filename当你输入的文件包含有附加的对象标志符的时候,使用这个。
这种文件的格式在后面会介绍。
-strparse offset从由offset指定的偏移量开始分析ASN1对象。
当你碰到一个嵌套的对象时,可以反复使用这个项来一直进到里面的结构捏出你需要的东东。
OpenSSL命令---s_client
OpenSSL命令---s_client/as3luyuan123/article/details/16812071⽤途:s_client为⼀个SSL/TLS客户端程序,与s_server对应,它不仅能与s_server进⾏通信,也能与任何使⽤ssl协议的其他服务程序进⾏通信。
⽤法:[cpp]1. openssl s_client [-host host] [-port port] [-connect host:port] [-verify depth] [-cert filename]2. [-certform DER|PEM] [-key filename] [-keyform DER|PEM] [-pass arg] [-CApath directory] [-CAfile filename]3. [-reconnect][-pause] [-showcerts] [-debug] [-msg] [-state] [-nbio_test] [-nbio][-crlf] [-ign_eof] [-no_ign_eof]4. [-quiet] [-ssl2] [-ssl3] [-tls1_1] [-tls1_2] [-tls1] [-dtls1] [-no_ssl2][-no_ssl3] [-no_tls1] [-no_tls1_1]5. [-no_tls1_2] [-bugs] [-cipher cipherlist] [-starttls protocol] [-engine id] [-tlsextdebug] [-no_ticket]6. [-sess_out filename] [-sess_in filename] [-rand file(s)]选项说明:-host host:设置服务地址。
-port port:设置服务端⼝,默认为4433。
-connect host:port:设置服务器地址和端⼝号。
OpenSSL常用命令
OpenSSL常⽤命令查看证书openssl x509 -in cacert.pem -text -noout # PEMopenssl x509 -in cacert.der -inform der -text -noout # DER (distinguished encoding rule)查看私钥openssl rsa -in cakey.pem -text -noout # PEMopenssl rsa -in cakey.der -inform der -text -noout # DER查看CSRopenssl req -in ca.csr -text -noout # PEMopenssl req -in ca.csr -inform der -text -noout # DER转换证书openssl x509 -in cacert.pem -out cacert.der -outform deropenssl x509 -in cacert.der -inform der -out cacert.pem -outform pem转换私钥openssl rsa -in cakey.pem -out cakey.der -outform deropenssl rsa -in cakey.der -inform der -out cakey.pem -outform pem转换CSRopenssl req -in ca.csr -out ca.csr -outform deropenssl req -in ca.csr -inform der -out ca.csr -outform pem利⽤-addext添加扩展man openssl查看req⼦命令man req man openssl-reqopenssl req -new -x509 -nodes -out allusion.crt -days 3650 -sha512 \-newkey rsa:2048 -keyout allusion.key \-subj '/C=US/ST=America/L=New York/O=IBM/OU=DevOps/CN=IBM/emailAddress=b@b.co' \ -addext 'subjectAltName=DNS:localhost, IP:127.0.0.1' \-addext 'certificatePolicies= 1.2.3.4'RHEL系⽣成证书fHOME = .oid_section = new_oidsopenssl_conf = default_modules[ default_modules ]ssl_conf = ssl_module[ ssl_module ]system_default = crypto_policy[ crypto_policy ].include = /etc/crypto-policies/back-ends/opensslcnf.config[ new_oids ]tsa_policy1 = 1.2.3.4.1tsa_policy2 = 1.2.3.4.5.6tsa_policy3 = 1.2.3.4.5.7[ ca ]default_ca = CA_default # The default ca section[ CA_default ]dir = /etc/pki/CA # Where everything is keptcerts = $dir/certs # Where the issued certs are keptcrl_dir = $dir/crl # Where the issued crl are keptdatabase = $dir/index.txt # database index file.#unique_subject = no # Set to 'no' to allow creation of several certs with same subject. new_certs_dir = $dir/newcerts # default place for new certs.certificate = $dir/cacert.pem # The CA certificateserial = $dir/serial # The current serial numbercrlnumber = $dir/crlnumber # the current crl number must be commented out to leave a V1 CRL crl = $dir/crl.pem # The current CRLprivate_key = $dir/private/cakey.pem # The private keyx509_extensions = usr_cert # The extensions to add to the certname_opt = ca_default # Subject Name optionscert_opt = ca_default # Certificate field optionsdefault_days = 365 # how long to certify fordefault_crl_days = 30 # how long before next CRLdefault_md = sha256 # use SHA-256 by defaultpreserve = no # keep passed DN orderingpolicy = policy_match[ policy_match ]countryName = matchstateOrProvinceName = matchorganizationName = matchorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional[ policy_anything ]countryName = optionalstateOrProvinceName = optionallocalityName = optionalorganizationName = optionalorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional[ req ]default_bits = 2048default_md = sha256default_keyfile = privkey.pemdistinguished_name = req_distinguished_nameattributes = req_attributesx509_extensions = v3_ca # The extensions to add to the self signed cert string_mask = utf8only[ req_distinguished_name ]countryName = Country Name (2 letter code)countryName_default = CNcountryName_min = 2countryName_max = 2stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = ApparitionlocalityName = Locality Name (eg, city)localityName_default = AbdicationanizationName = Organization Name (eg, company)anizationName_default = IBMorganizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = DevOpscommonName = Common Name (eg, your name or your server\'s hostname) commonName_max = 64emailAddress = Email AddressemailAddress_max = 64emailAddress_default = admin@[ req_attributes ]challengePassword = A challenge passwordchallengePassword_min = 1challengePassword_max = 20unstructuredName = An optional company name[ usr_cert ]basicConstraints = CA:FALSEnsComment = "OpenSSL Generated Certificate"subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid, issuer[ v3_req ]basicConstraints = CA:FALSEkeyUsage = nonRepudiation, digitalSignature, keyEncipherment[ v3_ca ]subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid:always, issuerbasicConstraints = critical, CA:true[ crl_ext ]authorityKeyIdentifier = keyid:always[ proxy_cert_ext ]basicConstraints = CA:FALSEnsComment = "OpenSSL Generated Certificate"subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid, issuerproxyCertInfo = critical, language:id-ppl-anyLanguage, pathlen:3, policy:foo[ tsa ]default_tsa = tsa_config1 # the default TSA section[ tsa_config1 ]dir = /etc/pki/CA # TSA root directoryserial = $dir/tsaserial # The current serial number (mandatory)crypto_device = builtin # OpenSSL engine to use for signingsigner_cert = $dir/tsacert.pem # The TSA signing certificate (optional)certs = $dir/cacert.pem # Certificate chain to include in reply (optional)signer_key = $dir/private/tsakey.pem # The TSA private key (optional)signer_digest = sha256 # Signing digest to use. (Optional)default_policy = tsa_policy1 # Policy if request did not specify it (optional)other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) accuracy = secs:1, millisecs:500, microsecs:100 # (optional)clock_precision_digits = 0 # number of digits after dot. (optional)ordering = yes # Is ordering defined for timestamps? (optional, default: no)tsa_name = yes # Must the TSA name be included in the reply? (optional, default: no) ess_cert_id_chain = no # Must the ESS cert id chain be included? (optional, default: no) ess_cert_id_alg = sha256 # algorithm to compute certificate identifier (optional, default: sha1) View CodePrepare directory & filesmkdir -pv /etc/pki/CA/{certs,newcerts,private,csr}touch index.txtecho 'unique_subject = no' > index.txt.attrehco 01 > serialPrepare rootCAopenssl genrsa -des3 -out private/cakey.pem 2048openssl req -new -x509 -nodes -days 3650 -key private/cakey.pem -out cacert.pem \-subj '/C=CN/ST=Apparition/L=Abdication/O=IBM/OU=DevOps/CN=rootCA/emailAddress=admin@/' openssl req -new -x509 -nodes -days 3650 -key private/cakey.pem -out cacert.pem -config fGenerate secondaryCAopenssl genrsa -des3 -out private/secondaryCA.key 2048openssl rsa -in private/secondaryCA.key -out private/secondaryCA.keyopenssl req -new -key private/secondaryCA.key -out csr/secondaryCA.csr \-subj '/C=CN/ST=Apparition/L=Abdication/O=IBM/OU=DevOps/CN=secondaryCA/emailAddress=admin@/' openssl ca -in csr/secondaryCA.csr -out certs/secondaryCA.crt -days 3650 \-cert cacert.pem -keyfile private/cakey.pem \-config f -extensions v3_caGenerate server certificateopenssl req -new -nodes -newkey rsa:2048 -keyout private/server.key -out csr/server.csr \-subj '/C=CN/ST=Apparition/L=Abdication/O=IBM/OU=DevOps/CN=server/emailAddress=admin@/' openssl ca -in csr/server.csr -out certs/server.crt -days 3650 \-cert certs/secondaryCA.crt -keyfile private/secondaryCA.key \-config fRevoke server certificateecho 01 > crlnumberopenssl ca -revoke certs/server.crt -cert cacert.pem -keyfile private/cakey.pem -config f # generate crlopenssl ca -gencrl -out crl.crl -cert cacert.pem -keyfile private/cakey.pem -config f openssl crl -in crl.crl -text -nooutpkcs12证书cat certs/secondaryCA cacert.pem > ca-chain.crt# 不包含CA证书链openssl pkcs12 -export \-in certs/server.crt -inkey private/server.key -nodes \-out server.pfx -passout pass:123321# 包含CA证书链openssl pkcs12 -export -chain -CAca ca-chain.crt \-in certs/server.crt -inkey private/server.key -nodes \-out server.pfx -passout pass:123321openssl pkcs12 -in ca-bundle.p12 -nocerts -nodes -out ca.key # 提取ca私钥openssl pkcs12 -in ca-bundle.p12 -clcerts -nokeys -out ca.crt # 仅输出ca证书openssl pkcs12 -in ca-bundle.p12 -info -noout。
openssl enc用法
openssl enc用法OpenSSL是一个开放源代码的软件库,它提供了一个安全传输层协议(SSL)和传输层安全性(TLS)的加密和解密功能。
其中的openssl enc命令用于数据的加密和解密,本文将介绍openssl enc的用法及相关命令参数。
openssl enc命令的基本用法如下:```openssl enc -<cipher> [-options] [-in filename] [-out filename] [-pass arg]```其中,<cipher>是指定加密算法的参数,例如AES,DES等。
-options是其他的一些选项参数,比如指定操作模式、输入输出编码等。
-in参数是输入文件名,-out参数是输出文件名,-pass参数用于指定密码。
下面是一些常用的openssl enc命令参数:1. -e: 加密输入的数据。
2. -d: 解密输入的数据。
3. -in filename: 指定输入文件名。
4. -out filename: 指定输出文件名。
5. -k password: 使用明文密码进行加密或解密操作。
6. -K key: 使用十六进制编码的密码进行加密或解密操作。
7. -nosalt: 禁用盐值的使用。
8. -a: 使用Base64编码输入或输出的数据。
9. -A: 使用Base64编码输入或输出的数据,但在输入中忽略换行符。
10. -iv IV: 指定初始向量。
11. -p: 打印出加密或解密的结果,以便于检查。
12. -v: 显示详细的操作过程。
例如,下面的命令用AES算法将文件input.txt加密,并输出到output.txt文件:```openssl enc -e -aes-256-cbc -in input.txt -out output.txt```如果需要解密output.txt文件,可以使用如下命令:```openssl enc -d -aes-256-cbc -in output.txt -out input_decrypt.txt ```除了基本的加密和解密操作外,openssl enc还提供了一些其他的功能。
openssl用法
openssl用法OpenSSL是一款广泛使用的加密库,它提供了许多加密和安全功能的实现。
本篇文章将介绍OpenSSL的基本用法,包括生成和管理证书、加解密数据、生成密码散列等常见功能。
1. 生成公私钥对OpenSSL可以用来生成公私钥对,用于加密数据。
生成公私钥对的命令如下:openssl genpkey -algorithm RSA -out private.keyopenssl rsa -in private.key -pubout -out public.key 其中,-algorithm指定算法,-out指定输出的文件名,-in指定输入的文件名。
2. 生成证书OpenSSL可以生成自签名证书,命令如下:openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem其中,-newkey指定生成新的私钥,-nodes表示不加密私钥,-keyout指定私钥输出文件名,-x509指定生成自签名证书,-days指定证书有效期,-out指定证书输出文件名。
3. 加解密数据OpenSSL可以使用公私钥对加解密数据,命令如下:openssl rsautl -encrypt -in plaintext.txt -out ciphertext.txt -inkey public.keyopenssl rsautl -decrypt -in ciphertext.txt -out plaintext.txt -inkey private.key其中,-encrypt表示加密,-decrypt表示解密,-in指定输入文件名,-out指定输出文件名,-inkey指定输入的私钥或公钥。
4. 生成密码散列OpenSSL可以生成各种密码散列,包括MD5、SHA-1、SHA-256等,命令如下:openssl dgst -md5 -out message.md5 message.txtopenssl dgst -sha1 -out message.sha1 message.txtopenssl dgst -sha256 -out message.sha256 message.txt 其中,-md5表示使用MD5算法,-sha1表示使用SHA-1算法,-sha256表示使用SHA-256算法,-out指定输出文件名,message.txt 为输入文件名。
openssl对称加密算法enc命令详解
openssl对称加密算法enc命令详解1、对称加密算法概述openssl的加密算法库提供了丰富的对称加密算法,我们可以通过openssl提供的对称加密算法指令的⽅式使⽤,也可以通过调⽤openssl提供的API的⽅式使⽤。
openssl的对称加密算法指令主要⽤来对数据进⾏加密和解密处理,openssl基本上为所有其⽀持的对称加密算法都提供了指令的⽅式的应⽤,这些应⽤指令的名字基本上都是以对称加密算法本⾝的名字加上位数、加密模式或者其他属性组合⽽成。
例如DES算法的CBC模式,其对应的指令就是des-cbc。
可以通过命令查看当前版本的openssl⽀持的对称加密算法,例如Ubunt14.04 openssl版本及⽀持对称加密算法指令如下:xlzh@cmos:~$ openssl enc -helpunknown option '-'options are.../**/Cipher Types-aes-128-cbc -aes-128-cbc-hmac-sha1 -aes-128-cfb-aes-128-cfb1 -aes-128-cfb8 -aes-128-ctr-aes-128-ecb -aes-128-gcm -aes-128-ofb-aes-128-xts -aes-192-cbc -aes-192-cfb-aes-192-cfb1 -aes-192-cfb8 -aes-192-ctr-aes-192-ecb -aes-192-gcm -aes-192-ofb-aes-256-cbc -aes-256-cbc-hmac-sha1 -aes-256-cfb-aes-256-cfb1 -aes-256-cfb8 -aes-256-ctr-aes-256-ecb -aes-256-gcm -aes-256-ofb-aes-256-xts -aes128 -aes192-aes256 -bf -bf-cbc-bf-cfb -bf-ecb -bf-ofb-blowfish -camellia-128-cbc -camellia-128-cfb-camellia-128-cfb1 -camellia-128-cfb8 -camellia-128-ecb-camellia-128-ofb -camellia-192-cbc -camellia-192-cfb-camellia-192-cfb1 -camellia-192-cfb8 -camellia-192-ecb-camellia-192-ofb -camellia-256-cbc -camellia-256-cfb-camellia-256-cfb1 -camellia-256-cfb8 -camellia-256-ecb-camellia-256-ofb -camellia128 -camellia192-camellia256 -cast -cast-cbc-cast5-cbc -cast5-cfb -cast5-ecb-cast5-ofb -des -des-cbc-des-cfb -des-cfb1 -des-cfb8-des-ecb -des-ede -des-ede-cbc-des-ede-cfb -des-ede-ofb -des-ede3-des-ede3-cbc -des-ede3-cfb -des-ede3-cfb1-des-ede3-cfb8 -des-ede3-ofb -des-ofb-des3 -desx -desx-cbc-id-aes128-GCM -id-aes192-GCM -id-aes256-GCM-rc2 -rc2-40-cbc -rc2-64-cbc-rc2-cbc -rc2-cfb -rc2-ecb-rc2-ofb -rc4 -rc4-40-rc4-hmac-md5 -seed -seed-cbc-seed-cfb -seed-ecb -seed-ofb可以看到上述我们执⾏的是enc -help命令,enc是什么东西?原来openssl提供了两种⽅式调⽤对称加密算法:⼀种就是直接调⽤对称加密指令,例如:openssl des-cbc -in plain.txt -out encrypt.txt -pass pass:12345678另外⼀种是使⽤enc的⽅式,即⽤对称加密指令作为enc指令的参数,例如:.openssl enc -des-cbc -in plain.txt -out encrypt.txt -pass pass:12345678上述两条指令完成的功能是⼀样的,⽽且其参数也是⼀样。
OpenSSL中的dgst、dh、dhparam、enc命令使用说明
OpenSSL中的dgst、dh、dhparam、enc命令使⽤说明OpenSSL中的dgst、dh、dhparam、enc命令使⽤说明dgst主要⽤于数据摘要、数据签名以及验证签名。
概要openssl dgst [-digest] [-help] [-c] [-d] [-list] [-hex] [-binary] [-r] [-out filename] [-sign filename] [-keyform arg] [-passin arg] [-verify filename] [-prverify filename] [-signature filename] [-sigopt nm:v] [-hmac key] [-fips-fingerprint] [-rand file...] [-engine i dgst函数输出⼗六进制的摘要⽂件,默认的摘要算法是sha256,输⼊如下命令查看可选摘要算法openssl dgst -list选项说明-digest ——摘要算法名称Supported digests:-blake2b512 -blake2s256 -md4-md5 -md5-sha1 -ripemd-ripemd160 -rmd160 -sha1-sha224 -sha256 -sha3-224-sha3-256 -sha3-384 -sha3-512-sha384 -sha512 -sha512-224-sha512-256 -shake128 -shake256-sm3 -ssl3-md5 -ssl3-sha1-whirlpool-help ——查找帮助-c ——当设置了-hex,输出结果每两个字符中加⼀个冒号-d ——打印出BIO调试信息值。
-hex ——以⼗六进输出结果,⼆选⼀-binary ——以⼆进制输出结果,⼆选⼀-r —— 以sha1sum的“coreutils”格式输出摘要-non-fips-allow —— 允许在FIPS模式使⽤⾮FIPS算法-out filename —— 输出⽂件,默认标准输出-sign filename —— 使⽤⽂件中的私钥签名-keyform arg —— 私钥格式,PEM | DER-passin arg —— 私钥密码-verify filename ——公钥验签-prverify filename ——私钥验签-signature filename ——签名⽂件-hmac key ——hmac 秘钥-non-fips-allow ——允许在FIPS模式使⽤⾮FIPS算法-fips-fingerprint ——在某些openssl-FIPS中使⽤特殊密钥计算HMAC-engine id ——指定硬件引擎file ——输⼊⽂件,不指定则为标准输⼊注意事项所有新应⽤程序的选择的摘要算法是SHA1。
OpenSSL使用指南
OpenSSL使用指南0.7p目录1.介绍intro2.编译build3.运行OpenSSL.exe openssl_exe4.算法编程API Alg_API4.1 对称算法4.1.1 DES4.1.2 AES4.1.3 RC44.1.4 EVP_4.2 公钥算法4.3 Hash算法4.4 随机数算法5.SSL协议编程API SSL6.CA和证书CA7.参考网址REF8.A.示例程序demoB.其他C.其他示例程序D.1.介绍OpenSSL是使用非常广泛的SSL的开源实现。
由于其中实现了为SSL所用的各种加密算法,因此OpenSSL也是被广泛使用的加密函数库。
1.1 SSLSSL(Secure Socket Layer)安全协议是由Netscape公司首先提出,最初用在保护Navigator浏览器和Web服务器之间的HTTP通信(即HTTPS)。
后来SSL协议成为传输层安全通信事实上的标准,并被IETF吸收改进为TLS(Transport Layer Security)协议。
SSL/TLS协议位于TCP协议和应用层协议之间,为传输双方提供认证、加密和完整性保护等安全服务。
SSL作为一个协议框架,通信双方可以选用合适的对称算法、公钥算法、MAC 算法等密码算法实现安全服务。
1.2 SSL的工作原理参见/tech/security/ssl/howitworks.html。
1.3 OpenSSLOpenSSL是著名的SSL的开源实现,是用C语言实现的。
OpenSSL的前身是SSLeay,一个由Eric Young开发的SSL的开源实现,支持SSLv2/v3和TLSv1。
伴随着SSL协议的普及应用,OpenSSL被广泛应用在基于TCP/Socket的网络程序中,尤其是OpenSSL和Apache相结合,是很多电子商务网站服务器的典型配置。
2.编译和安装OpenSSLOpenSSL开放源代码,这对学习、分析SSL和各种密码算法提供了机会,也便于在上面进一步开发。
openssl中文简介
openssl简介(中文版本)广州全通数码科技有限公司软件技术部制作(内部资料,禁止外传)目录前言............................................................... 1openssl简介-证书.. (2)openssl简介-加密算法 (7)openssl简介-协议 (9)openssl简介-入门 (11)openssl简介-指令 verify (13)openssl简介-指令asn1parse (17)openssl简介-指令ca(一) (19)openssl简介-指令ca(二) (22)openssl简介-指令cipher (24)openssl简介-指令dgst (28)openssl简介-指令dhparam (29)openssl简介-指令enc (31)openssl简介-指令gendsa (34)openssl简介-指令genrsa (35)openssl简介-指令passwd (36)openssl简介-指令pkcs7 (37)openssl简介-指令rand (38)openssl简介-指令req(一) (39)openssl简介-指令req(二) (42)openssl简介-指令rsa (45)openssl简介-指令rsautl (47)openssl简介-指令s_client(一) (50)openssl简介-指令s_client(二) (53)openssl简介-指令s_server (57)openssl简介-指令sess_id (59)openssl简介-指令speed (61)openssl简介-指令version (62)openssl简介-指令x509(一) (63)openssl简介-指令x509(二) (66)前言不久前接到有关ssl的活,结果找遍中文网站资料实在奇缺。
感觉是好象现在国内做这个技术的人不多。
Openssl命令详解-证书篇
Openssl命令详解-证书篇⽣成⾃签证书# 设置CA证书subjectCA_SUBJ="/C=CN/ST=ShanDong/L=JiNan/O=sec/OU=sec/CN=/emailAddress=hxy@"# 1. ⽣成rsa⾃签CAopenssl req -x509 -newkey rsa:2048 -keyout pri.key -out ca.crt -days 3650 -nodes \-subj $CA_SUBJ# 2. ⽣成sm2⾃签CA (以下也可以使⽤openssl 1.1.x以上版本)gmssl ecparam -genkey -name SM2 -text -out pri.keygmssl req -new -key pri.key -out ca.csr -subj $CA_SUBJgmssl x509 -req -days 3650 -sm3 -in ca.csr -signkey pri.key -out ca.crt# 3. ⽣成ecc⾃签CAopenssl ecparam -out pri.key -name prime256v1 -genkeyopenssl req -key pri.key -new -out ca.csr -subj $CA_SUBJopenssl x509 -req -in ca.csr -signkey pri.key -out ca.crt -days 3650# 4. ⽣成pkcs8格式的私钥openssl pkcs8 -topk8 -in pri.key -out pkcs8_pri.key -nocrypt查看私钥和证书# 1. 查看私钥openssl ec -in pri.key -text #解析ec类私钥(包括sm2)openssl rsa -in pri.key -text #解析rsa私钥# 2. 查看证书x509openssl x509 -in ca.crt -text -noout命令详情(以ec为例)1. ⽣成⾃签名证书2. 私钥保护3. 查看私钥4. 查看证书。
openssl-win32 用法
openssl-win32 用法OpenSSL是一个开源的软件库,提供了各种加密和安全相关的功能。
对于Windows平台,您可以使用openssl-win32二进制文件来运行OpenSSL命令。
下面是一些常见的openssl-win32用法:1. 生成私钥和证书请求:- 生成私钥:openssl genpkey -algorithm RSA -out private.key- 生成证书请求:openssl req -new -key private.key -out csr.csr2. 查看和验证证书:- 查看证书信息:openssl x509 -in certificate.crt -text- 验证证书签名是否正确:openssl verify -CAfile ca.crt certificate.crt3. 对称加密和解密:- 加密文件:openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.enc- 解密文件:openssl enc -aes-256-cbc -d -in encrypted.enc -out decrypted.txt4. 非对称加密和解密:- 公钥加密文件:openssl rsautl -encrypt -pubin -in plaintext.txt -out encrypted.enc -inkey public.key- 私钥解密文件:openssl rsautl -decrypt -in encrypted.enc -out decrypted.txt -inkey private.key5. 数字签名和验证:- 使用私钥进行签名:openssl dgst -sha256 -sign private.key -out signature.bin plaintext.txt- 使用公钥进行验证:openssl dgst -sha256 -verify public.key -signature signature.bin plaintext.txt请注意,以上只是一些常见用法示例,并且仅涵盖了OpenSSL的一小部分功能。
