Linux下OpenSSL客户端中使用req命令来生成证书的教程

合集下载

jdk linux 生成crt证书

jdk linux 生成crt证书

jdk linux 生成crt证书**一、准备环境**在开始之前,请确保您已经安装了JDK,并且对Linux系统有一定的了解。

下面我们将介绍如何生成一个crt证书。

**二、生成crt证书的过程**1. 打开终端,并切换到root用户或具有sudo权限的用户。

2. 执行以下命令以生成证书请求文件:```shellopenssl genrsa -out certificate_request.key 2048```这将生成一个名为`certificate_request.key`的私钥文件。

3. 接下来,使用以下命令生成证书颁发文件:```shellopenssl req -new -key certificate_request.key -out certificate.csr```这将生成一个名为`certificate.csr`的证书颁发文件,其中包含证书请求和密钥。

4. 使用以下命令以root用户身份签署证书颁发文件:```shellopenssl x509 -req -in certificate.csr -signkeycertificate_request.key -out certificate.crt```这将生成一个名为`certificate.crt`的证书文件。

**三、注意事项**请注意,上述过程可能需要一些时间来完成,具体取决于您的系统性能和网络连接速度。

此外,为了保护您的私钥文件,我们建议您将其存储在一个安全的位置,例如受密码保护的文件夹中。

**四、总结**现在您已经成功地在Linux系统上生成了一个crt证书。

您可以使用该证书在Java开发中使用,例如在Java Web应用程序中进行身份验证和加密通信。

请确保将生成的证书文件和私钥文件妥善保管,并遵循最佳实践来保护您的敏感信息。

总的来说,这个过程是一个简单的步骤,可以帮助您在Linux系统上生成一个有效的crt证书。

如果您遇到任何问题或需要进一步的帮助,请随时联系我们。

Linux下使用openssl制作CA及证书颁发

Linux下使用openssl制作CA及证书颁发

一. 创建CA (2)1. 创建CA需要用到的目录和文件: (2)2. 生成CA的私钥和自签名证书(即根证书) (2)3. 创建一个配置文件,以便后续CA日常操作中使用: .. 3二. CA的日常操作 (4)1、创建私钥 (4)2、查看创建的密钥 (4)3、创建请求文件 (4)4、查看创建的请求文件 (4)5. 根据证书申请请求签发证书 (5)6、执行签发命令: (5)7. 吊销证书(作废证书) (5)8. 生成证书吊销列表文件(CRL) (5)9、制作PFX(p12)格式的证书 (6)三. 自己生成公钥密钥,并用测试CA签发数字证书 (6)1. 创建密钥和证书请求(证书请求里包含了公钥) (6)2. 用测试CA为testuser签发证书 (6)3. 制作一个PKCS12格式的文档(个人数字证书) (7)四、openssl的其他所有参数 (7)本文旨在利用开源openssl软件,在Linux(或UNIX/Cygwin)下创建一个简单的CA。

我们可以利用这个CA进行PKI、数字证书相关的测试。

比如,在测试用Tomcat或Apache 构建HTTPS双向认证时,我们可以利用自己建立的测试CA来为服务器端颁发服务器数字证书,为客户端(浏览器)生成文件形式的数字证书(可以同时利用openssl生成客户端私钥)。

该简单的CA将建立在用户自己的目录下($HOME/testca),无需超级用户(root)权限。

一. 创建CA1. 创建CA需要用到的目录和文件:执行命令如下:mkdir "$HOME/testca"cd "$HOME/testca"mkdir newcerts private confchmod g-rwx,o-rwx privateecho "01" > serialtouch index.txt说明:$HOME/testca为待建CA的主目录。

openssl s_server证书格式

openssl s_server证书格式

openssl s_server证书格式OpenSSL s_server是一个开放源代码的工具,用于在SSL/TLS协议下进行服务器的测试和调试。

s_server工具可以用于快速搭建一个SSL/TLS协议的服务器,而不需要安装任何第三方的服务器软件。

在使用s_server工具的过程中,需要一个有效的证书和相应的私钥,本文将重点介绍这些证书和私钥的格式。

第一步:生成私钥在使用s_server工具之前,首先需要生成一个私钥文件。

在Linux系统中,可以通过以下命令生成私钥:```openssl genrsa -out server.key 2048```该命令将会生成一个名为server.key的2048位长度的RSA私钥文件。

一旦生成,私钥就可以用于生成证书请求文件。

第二步:生成证书请求文件证书请求文件(CSR)包含有关您的组织,服务器及其公共密钥的信息。

在生成证书请求文件之前,应该为您想要保护的域名注册一个可用的域名。

在Linux系统中,可以通过以下命令生成证书请求文件(将域名替换为您自己的域名):```openssl req -new -key server.key -out server.csr```该命令将提示您输入有关服务器主机名和其他有关组织信息的详细信息。

输入必要的信息后,将生成一个名为server.csr的证书请求文件。

第三步:使用自签名证书自签名证书是您可以使用的证书类型之一。

自签名证书是由您自己的私钥签名的证书。

在实践中,自签名证书可能不适合用于与公共的Web浏览器一起使用的生产环境。

但是,在测试和开发过程中,您可以自行签署证书并使用它来测试SSL/TLS协议。

在Linux系统中,可以通过以下命令生成自签名证书:```openssl req -x509 -sha256 -days 365 -key server.key -in server.csr -out server.crt```该命令将使用您的私钥以及您的证书请求文件生成一个名为server.crt的自签名证书。

linux创建本地ip为域名的证书

linux创建本地ip为域名的证书

linux创建本地ip为域名的证书全文共四篇示例,供读者参考第一篇示例:在Linux系统中创建本地IP为域名的证书是一种比较特殊且有用的操作。

通常情况下,我们使用域名来访问网站或服务器,而不是直接使用IP地址。

但是有些情况下,我们可能需要将一个本地IP地址作为域名来访问,比如在开发环境中进行测试、本地网络中的一些内部服务等。

在这种情况下,我们可以自己创建一个证书,使得我们可以像访问普通网站一样访问这个本地IP地址。

在Linux系统中,我们可以使用openssl工具来创建自签名证书。

下面就是一个简单的步骤来创建一个本地IP为域名的证书。

第一步:生成私钥首先,我们需要生成一个私钥文件。

我们可以使用以下命令来生成一个私钥文件(假设我们的本地IP为192.168.1.1):openssl genrsa -out localhost.key 2048这条命令将会生成一个2048位的RSA私钥,并存储在localhost.key文件中。

第二步:生成证书签名请求(CSR)接下来,我们需要生成一个证书签名请求(CSR)文件。

我们可以使用以下命令来生成一个CSR文件:openssl req -new -key localhost.key -out localhost.csr在执行这条命令时,会先要求输入一些证书信息,比如国家、地区、组织、单位、公共名称等。

在公共名称的部分,我们需要输入我们的本地IP地址,也就是192.168.1.1。

第三步:生成自签名证书最后,我们可以使用以下命令来生成一个自签名的证书:openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt在这条命令中,-days 365表示证书的有效期为365天。

最终生成的证书将会存储在localhost.crt文件中。

现在,我们已经成功地创建了一个本地IP为域名的证书。

使用openssl生成证书(含openssl详解)

使用openssl生成证书(含openssl详解)

使⽤openssl⽣成证书(含openssl详解)⼀、openssl 简介openssl 是⽬前最流⾏的 SSL 密码库⼯具,其提供了⼀个通⽤、健壮、功能完备的⼯具套件,⽤以⽀持SSL/TLS 协议的实现。

官⽹:构成部分1. 密码算法库2. 密钥和证书封装管理功能3. SSL通信API接⼝⽤途1. 建⽴ RSA、DH、DSA key 参数2. 建⽴ X.509 证书、证书签名请求(CSR)和CRLs(证书回收列表)3. 计算消息摘要4. 使⽤各种 Cipher加密/解密5. SSL/TLS 客户端以及服务器的测试6. 处理S/MIME 或者加密邮件⼆、RSA密钥操作默认情况下,openssl 输出格式为 PKCS#1-PEM⽣成RSA私钥(⽆加密)openssl genrsa -out rsa_private.key 2048⽣成RSA公钥openssl rsa -in rsa_private.key -pubout -out rsa_public.key⽣成RSA私钥(使⽤aes256加密)openssl genrsa -aes256 -passout pass:111111 -out rsa_aes_private.key 2048其中 passout 代替shell 进⾏密码输⼊,否则会提⽰输⼊密码;⽣成加密后的内容如:-----BEGIN RSA PRIVATE KEY-----Proc-Type: 4,ENCRYPTEDDEK-Info: AES-256-CBC,5584D000DDDD53DD5B12AE935F05A007Base64 Encoded Data-----END RSA PRIVATE KEY-----此时若⽣成公钥,需要提供密码openssl rsa -in rsa_aes_private.key -passin pass:111111 -pubout -out rsa_public.key其中 passout 代替shell 进⾏密码输⼊,否则会提⽰输⼊密码;转换命令私钥转⾮加密openssl rsa -in rsa_aes_private.key -passin pass:111111 -out rsa_private.key私钥转加密openssl rsa -in rsa_private.key -aes256 -passout pass:111111 -out rsa_aes_private.key私钥PEM转DERopenssl rsa -in rsa_private.key -outform der-out rsa_aes_private.der-inform和-outform 参数制定输⼊输出格式,由der转pem格式同理查看私钥明细openssl rsa -in rsa_private.key -noout -text使⽤-pubin参数可查看公钥明细私钥PKCS#1转PKCS#8openssl pkcs8 -topk8 -in rsa_private.key -passout pass:111111 -out pkcs8_private.key其中-passout指定了密码,输出的pkcs8格式密钥为加密形式,pkcs8默认采⽤des3 加密算法,内容如下:-----BEGIN ENCRYPTED PRIVATE KEY-----Base64 Encoded Data-----END ENCRYPTED PRIVATE KEY-----使⽤-nocrypt参数可以输出⽆加密的pkcs8密钥,如下:-----BEGIN PRIVATE KEY-----Base64 Encoded Data-----END PRIVATE KEY-----三、⽣成⾃签名证书⽣成 RSA 私钥和⾃签名证书openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crtreq是证书请求的⼦命令,-newkey rsa:2048 -keyout private_key.pem 表⽰⽣成私钥(PKCS8格式),-nodes 表⽰私钥不加密,若不带参数将提⽰输⼊密码;-x509表⽰输出证书,-days365 为有效期,此后根据提⽰输⼊证书拥有者信息;若执⾏⾃动输⼊,可使⽤-subj选项:openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=/emailAddress=yy@"使⽤已有RSA 私钥⽣成⾃签名证书openssl req -new -x509 -days 365 -key rsa_private.key -out cert.crt-new 指⽣成证书请求,加上-x509 表⽰直接输出证书,-key 指定私钥⽂件,其余选项与上述命令相同四、⽣成签名请求及CA 签名使⽤ RSA私钥⽣成 CSR 签名请求openssl genrsa -aes256 -passout pass:111111 -out server.key 2048openssl req -new -key server.key -out server.csr此后输⼊密码、server证书信息完成,也可以命令⾏指定各类参数openssl req -new -key server.key -passin pass:111111 -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=/emailAddress=yy@"*** 此时⽣成的 csr签名请求⽂件可提交⾄ CA进⾏签发 ***查看CSR 的细节cat server.csr-----BEGIN CERTIFICATE REQUEST-----Base64EncodedData-----END CERTIFICATE REQUEST-----openssl req -noout -text -in server.csr使⽤ CA 证书及CA密钥对请求签发证书进⾏签发,⽣成 x509证书openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -passin pass:111111 -CAcreateserial -out server.crt其中 CAxxx 选项⽤于指定CA 参数输⼊五、证书查看及转换查看证书细节openssl x509 -in cert.crt -noout -text转换证书编码格式openssl x509 -in cert.cer -inform DER -outform PEM -out cert.pem合成 pkcs#12 证书(含私钥)** 将 pem 证书和私钥转 pkcs#12 证书 **openssl pkcs12 -export -in server.crt -inkey server.key -passin pass:111111 -password pass:111111 -out server.p12其中-export指导出pkcs#12 证书,-inkey 指定了私钥⽂件,-passin 为私钥(⽂件)密码(nodes为⽆加密),-password 指定 p12⽂件的密码(导⼊导出)** 将 pem 证书和私钥/CA 证书合成pkcs#12 证书**openssl pkcs12 -export -in server.crt -inkey server.key -passin pass:111111 \-chain -CAfile ca.crt -password pass:111111 -out server-all.p12其中-chain指⽰同时添加证书链,-CAfile 指定了CA证书,导出的p12⽂件将包含多个证书。

Linux IPSec操作手册

Linux IPSec操作手册

Linux IPSec操作手册IPSec操作手册第一部分: OpenSSL生成证书首先需要一个根证书,然后用这个根证书来下发“子证书”。

1,找一台Linux PC, 首先切换目录,到 /etc/pki/tls/misc,openssl的脚本在这里。

2,生成根证书: ./CA -newca输入pass phrase,后面签发的时候会用到,类似一个密码 CA证书的路径在/etc/pki/CA/cacert.pem3,生成server私有密钥:openssl genrsa -out server.key 20484,生成服务器证书请求:openssl req -new -key server.key -out server.csr5,把server.crt文件改名成newreq.pem,然后用CA来签证就可以了 mv server.csr newreq.pem ./CA �Csign6,把newcert.pem改名成server.pem mv newcert.pem server.pem 这就是server的证书。

7,重复3-6步,生成client的证书和私钥。

8,将 server.key 和 server.pem 和 cacert.pem复制到FC1080,其中server.key 和server.pem import到Local Certificates中,cacert.pem import到Trusted CA 中(只需导入证书部分,描述部分不用导入)在Linux PC上,新建/var/cert 目录,将client.pem, client.key, cacert.pem复制到 /var/cert/目录下。

9,在Linux PC的 /var/cert/目录下执行下列命令:ln -s cacert.pem $(openssl x509 -noout -hash -in cacert.pem).0这个命令是生成一个hash link,如果没有此hash link,后面将无法建立IPSec通道至此两台主机的证书分发工作已经完成。

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证书请求和签名命令req基本分析

openssl证书请求和签名命令req基本分析 ⼀ 基本概念:OpenSSL是⼀个开源项⽬,其组成主要包括⼀下三个组件:1. openssl:多⽤途的命令⾏⼯具2. libcrypto:加密算法库3. libssl:加密模块应⽤库,实现了ssl及tlsopenssl可以实现:秘钥证书管理、对称加密和⾮对称加密更多简介和官⽹。

平时我们使⽤openssl最多的莫过于使⽤指令了,⽽最为常见的⼏个指令如下:1. genrsa⽣成RSA参数2. req3. x5094. rsa5. ca为了缩短篇幅,突出重点,这⾥只介绍req和x509的⽤法:⼆ req req的基本功能主要有两个:⽣成证书请求和⽣成⾃签名证书,当然这并不是其全部功能,但是这两个最为常见;常见使⽤⽅法:openssl req [args] outfile主要参数:【更多参数查看:openssl req -help】args1 是输⼊输⼊⽂件格式:-inform arg-inform DER 使⽤输⼊⽂件格式为DER-inform PEM 使⽤输⼊⽂件格式为PEMargs2 输出⽂件格式:-outform arg-outform DER 使⽤输出⽂件格式为DER-outform PEM 使⽤输出⽂件格式为PEMargs3 是待处理⽂件-in inputfilepathargs4 待输出⽂件-out outputfilepathargs5 ⽤于签名待⽣成的请求证书的私钥⽂件的解密密码-passin passwordsargs6 ⽤于签名待⽣成的请求证书的私钥⽂件-key fileargs7指定输⼊密钥的编码格式 -keyform arg-keyform DER-keyform NET-keyform PEMargs8 ⽣成新的证书请求-newargs9输出⼀个X509格式的证书,签名证书时使⽤-x509args10使⽤X509签名证书的有效时间-days // -days 3650 有效期10年使⽤的案例:利⽤私钥⽣成证书请求csropenssl req -new -key server.key -out server.csr使⽤案例:利⽤私钥⽣成⾃签名证书openssl req -new -x509 -days 3650 -key ca.key -out ca.crt 三 x509 x509是⼀个功能很丰富的证书处理⼯具。

数字证书的生成和安装方法

数字证书的生成和安装方法
数字证书的生成和安装方法如下:
1、生成私钥:
首先,打开命令提示符窗口,并导航到需要存储数字证书的目录。

然后,运行以下命令以生成一个新的私钥:
openssl genpkey -algorithm RSA -out private.key
2、生成CSR文件:
接下来,使用私钥生成一个证书签名请求(CSR)文件,该文件将用于向证书颁发机构申请数字证书。

运行以下命令生成CSR文件:
openssl req -new -key private.key -out csr.csr
3、获取数字证书:
将CSR文件发送给证书颁发机构。

机构将验证您的身份和域名所有权,并根据您的请求生成数字证书。

4、安装证书:
一旦您收到数字证书,将其保存到与私钥相同的目录。

然后,运行以下命令将证书和私钥合并到一个新文件中:
openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.pfx
5、安装PFX文件:
最后,将生成的PFX文件导入到您要安装证书的目标服务器或设备上。

具体步骤可能因服务器或设备而异,但通常涉及导
入PFX文件并将证书配置为正确的身份验证和加密选项。

请注意,上述命令中的文件名和路径应根据实际情况进行替换。

linux系统更换安全证书

linux系统更换安全证书要更换Linux系统的安全证书,可以按照以下步骤进行操作:1. 生成新的安全证书,可以使用 OpenSSL 工具来生成新的证书。

具体命令如下:```openssl req -new -x509 -days 365 -nodes -out mycert.pem -keyout mykey.pem```这个命令会生成一个有效期为 365 天的新证书文件mycert.pem 和私钥文件 mykey.pem。

2. 备份原有的旧证书和私钥文件,以便需要时可以恢复。

可以使用如下命令备份:```mv /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/certs/ssl-cert-snakeoil.pem.backupmv /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/private/ssl-cert-snakeoil.key.backup```3. 将新生成的证书和私钥文件复制到正确的目录下,以使系统可以访问到它们。

可以使用如下命令复制:```cp mycert.pem /etc/ssl/certs/ssl-cert-snakeoil.pemcp mykey.pem /etc/ssl/private/ssl-cert-snakeoil.key```4. 更新证书的权限,以确保只有超级用户才能访问它们。

可以使用如下命令更新权限:```chmod 600 /etc/ssl/certs/ssl-cert-snakeoil.pemchmod 600 /etc/ssl/private/ssl-cert-snakeoil.key```5. 重新启动相关的服务,以使系统开始使用新的证书。

具体需要重启哪些服务取决于系统的配置,一般包括 web 服务器、邮件服务器等。

可以使用如下命令重启 Apache 服务器:```service apache2 restart```完成以上步骤后,Linux系统的安全证书就会被成功更换。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux下OpenSSL客户端中使用req命令来生成证书的教程作者:Gordon0918 字体:[增加减小] 来源:开源中文社区时间:04-22 11:56:58我要评论这篇文章主要介绍了Linux下OpenSSL客户端中使用req命令来生成证书的教程,详细讲解了自动生成密钥和生成自签名证书的方法,需要的朋友可以参考下openssl req 用于生成证书请求,以让第三方权威机构CA来签发,生成我们需要的证书。

req 命令也可以调用x509命令,以进行格式转换及显示证书文件中的text,modulus等信息。

如果你还没有密钥对,req命令可以一统帮你生成密钥对和证书请求,也可以指定是否对私钥文件进行加密。

1、密钥、证书请求、证书概要说明在证书申请签发过程中,客户端涉及到密钥、证书请求、证书这几个概念,初学者可能会搞不清楚三者的关系,网上有的根据后缀名来区分三者,更让人一头雾水。

我们以申请证书的流程说明三者的关系。

客户端(相对于CA)在申请证书的时候,大体上有三个步骤:第一步:生成客户端的密钥,即客户端的公私钥对,且要保证私钥只有客户端自己拥有。

第二步:以客户端的密钥和客户端自身的信息(国家、机构、域名、邮箱等)为输入,生成证书请求文件。

其中客户端的公钥和客户端信息是明文保存在证书请求文件中的,而客户端私钥的作用是对客户端公钥及客户端信息做签名,自身是不包含在证书请求中的。

然后把证书请求文件发送给CA机构。

第三步:CA机构接收到客户端的证书请求文件后,首先校验其签名,然后审核客户端的信息,最后CA机构使用自己的私钥为证书请求文件签名,生成证书文件,下发给客户端。

此证书就是客户端的身份证,来表明用户的身份。

至此客户端申请证书流程结束,其中涉及到证书签发机构CA,CA是被绝对信任的机构。

如果把客户端证书比作用户身份证,那么CA就是颁发身份证的机构,我们以https为例说明证书的用处。

为了数据传输安全,越来越多的网站启用https。

在https握手阶段,服务器首先把自己的证书发送给用户(浏览器),浏览器查看证书中的发证机构,然后在机器内置的证书中(在PC或者手机上,内置了世界上著名的CA机构的证书)查找对应CA证书,然后使用内置的证书公钥校验服务器的证书真伪。

如果校验失败,浏览器会提示服务器证书有问题,询问用户是否继续。

例如12306网站,它使用的自签名的证书,所以浏览器会提示证书有问题,在12306的网站上有提示下载安装根证书,其用户就是把自己的根证书安装到用户机器的内置证书中,这样浏览器就不会报证书错误。

但是注意,除非特别相信某个机构,否则不要在机器上随便导入证书,很危险。

2、req指令说明上一节我们看到了申请证书流程,生成密钥对我们已经知道,那么如何生成证书请求呢,req指令就该上场了,我们可以查看req的man手册,如下:openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits][-newkey alg:file] [-nodes] [-key filename] [-keyfo rm PEM|DER] [-keyout filename] [-keygen_engine id] [-[digest]] [-config filename] [-subj arg] [-multivalue-rdn] [-x509] [-days n] [-set_serial n][-asn1-kludge] [-no-a sn1-kludge] [-newhdr] [-extensions section] [-reqexts section] [-utf8] [-nameopt] [-reqopt] [-subject] [-subj arg] [-batch] [-verbose] [-engine id]发现其参数多而复杂,还有许多没有用到过的参数。

但是在实际应用中我们使用到的参数很有限,我们根据req的基本功能来学习。

req的基本功能主要有两个:生成证书请求和生成自签名证书。

其他还有一些校验、查看请求文件等功能,示例会简单说明下。

参数说明如下[new/x509]当使用-new选取的时候,说明是要生成证书请求,当使用x509选项的时候,说明是要生成自签名证书。

[key/newkey/keyout]key和newkey是互斥的,key是指定已有的密钥文件,而newkey是指在生成证书请求或者自签名证书的时候自动生成密钥,然后生成的密钥名称有keyout参数指定。

当指定newkey选项时,后面指定rsa:bits说明产生rsa密钥,位数由bits指定。

指定d sa:file说明产生dsa密钥,file是指生成dsa密钥的参数文件(由dsaparam生成)[in/out/inform/outform/keyform]in选项指定证书请求文件,当查看证书请求内容或者生成自签名证书的时候使用out选项指定证书请求或者自签名证书文件名,或者公钥文件名(当使用pubkey选项时用到),以及其他一些输出信息。

inform、outform、keyform分别指定了in、out、key选项指定的文件格式,默认是PE M格式。

[config]参数文件,默认是/etc/ssl/f(ubuntu12.04),根据系统不同位置不同。

该文件包含生成req时的参数,当在命令行没有指定时,则采用该文件中的默认值。

除上述主要参数外,还有许多其他的参数,不在一一叙述,有兴趣的读者可以查看req 的man手册3、req指令使用实例(1)使用已有私钥生成证书请求使用原有的RSA密钥生成证书请求文件,输入主体相关信息:复制代码代码如下:$ openssl req -new -key RSA.pem -passin pass:123456 -out client.pemYou are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:AUState or Province Name (full name) [Some-State]:BJLocality Name (eg, city) []:BJOrganization Name (eg, company) [Internet Widgits Pty Ltd]:BJOrganizational Unit Name (eg, section) []:BJCommon Name (e.g. server FQDN or YOUR name) []:BJEmail Address []:BJPlease enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:12345An optional company name []:BJ......使用原有的RSA密钥生成证书请求文件,指定-batch选项,主体信息从配置文件读取:复制代码代码如下:$ openssl req -new -key RSA.pem -passin pass:123456 -out client.pem -batch使用原有的RSA密钥生成证书请求文件,指定-batch选项,主体信息由命令行subj指定:复制代码代码如下:openssl req -new -key RSA.pem -passin pass:123456 -out client.pem -subj /C=AU/ ST=Some-State/O=Internet使用原有的RSA密钥生成证书请求文件,指定-batch选项,主体信息由命令行subj指定,且输出公钥:复制代码代码如下:$ openssl req -new -key RSA.pem -passin pass:123456 -out client.pem -subj /C=A U/ST=Some-State/O=Internet -pubkey可以看到公钥和请求信息:复制代码代码如下:$ cat client.pem-----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL6e+hk0TAsYlPk5XB1tLCtCO8wQ7JMM YQ9SMy4Q1liPg4TdgSkdfbLB2UXmzzMCp+ZBDk9txwtewqv7PVcvY0MCAwEAAQ==-----END PUBLIC KEY----------BEGIN CERTIFICATE REQUEST-----MIIBGDCBwwIBADA1MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTE RMA8GA1UECgwISW50ZXJuZXQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAvp76GTRM CxiU+TlcHW0sK0I7zBDskwxhD1IzLhDWWI+DhN2BKR19ssHZRebPMwKn5kEOT23HC17Cq/s9Vy9jQwIDAQABoCkwJwYJKoZIhvcNAQkOMRowGDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DANBgkqhkiG9w0BAQUFAANBAFBiB0fTUwTSoFeQdTWIr3KXzDHP bgLy1/nlJ71dYLfGGrR61RKmrXgpf76akURtF+gEXwLMfPO6FQlaIOYEe/c=-----END CERTIFICATE REQUEST-----(2)自动生成密钥,生成证书请求文件自动生成1024位RSA密钥,并生成证书请求文件:复制代码代码如下:$ openssl req -new -newkey rsa:1024 -out client.pem -keyout RSA.pem -batch Generating a 1024 bit RSA private key.......................................++++++ ...............................++++++writing new private key to 'RSA.pem'Enter PEM pass phrase:Verifying - Enter PEM pass phrase:......自动生成1024位RSA密钥,并生成证书请求文件,指定-nodes文件,密钥文件不加密:复制代码代码如下:$ openssl req -new -newkey rsa:1024 -out client.pem -keyout RSA.pem -batch -no desGenerating a 1024 bit RSA private key..++++++.........................++++++writing new private key to 'RSA.pem'......自动生成1024位DSA密钥参数:复制代码代码如下:$ openssl dsaparam -out DSA.param 1024Generating DSA parameters, 1024 bit long primeThis could take some time...+.+..+.++++++++++++++++++++++++++++++++++++++++++++++ +++++*................+...........+......+.+.............+.+.....+.++++++++++++++++++++++ +++++++++++++++++++++++++++++*自动生成1024位DSA密钥,并生成证书请求文件,指定-nodes文件,密钥文件不加密:复制代码代码如下:$ openssl req -new -newkey dsa:DSA.param -out client.pem -keyout DSA.pem -bat ch -nodesGenerating a 1024 bit DSA private keywriting new private key to 'DSA.pem'......(3)生成自签名证书生成自签名证书,与req参数一样,只需要把req修改为x509即可:复制代码代码如下:$ openssl req -x509 -newkey rsa:1024 -out client.cer -keyout RSA.pem -batch -no desGenerating a 1024 bit RSA private key.........++++++..++++++writing new private key to 'RSA.pem'......查看证书文件:复制代码代码如下:$ openssl x509 -in client.cer -noout -textCertificate:Data:Version: 3 (0x2).....Signature Algorithm: sha1WithRSAEncryption5b:d7:f5:fd:18:3a:a9:22:2a:d9:f1:fc:00:3a:cf:23:ff:d1:82:e5:2d:3f:7e:97:a8:38:32:e6:88:7a:ce:9f:31:cc:ea:60:06:d1:96:bb:c8:42:ec:ef:26:73:4e:3b:2d:fa:0f:16:c2:25:30:1b:a5:ca:35:bd:9b:dd:4b:41:d4:8b:95:3a:d4:7c:aa:8d:0d:2d:e7:f3:95:33:d2:4a:5a:7f:a2:5d:cc:48:60:9f:ca:2d:77:d9:ed:e9:09:f3:a1:18:96:1d:91:c6:1c:2b:7a:c1:d6:5d:81:87:25:0d:32:6a:55:d2:89:95:c5:32:44:cc:9d:e7:68:6f:d8:80(4)查看证书请求内容生成证书请求:复制代码代码如下:$ openssl req -new -newkey rsa:1024 -out client.req -keyout RSA.pem -batch -nod esGenerating a 1024 bit RSA private key ...............................................................++++++ ......................++++++writing new private key to 'RSA.pem'......查看证书请求内容,subject指定输出主体:复制代码代码如下:$ openssl req -in client.req -noout -text -subjectCertificate Request:Data:Version: 0 (0x0)Subject: C=AU, ST=Some-State, O=Internet Widgits Pty LtdSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (1024 bit)Modulus:...Exponent: 65537 (0x10001)Attributes:Requested Extensions:X509v3 Basic Constraints:CA:FALSEX509v3 Key Usage:Digital Signature, Non Repudiation, Key EnciphermentSignature Algorithm: sha1WithRSAEncryption...subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd(5)校验证书请求文件指定verify指令,校验证书请求文件,其操作时提取请求文件中的公钥来验证签名信息:复制代码代码如下:$ openssl req -verify -in client.req -nooutverify OK4、生成证书步骤小结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位的密钥。

相关文档
最新文档