首先通过下面的链接下载openSSL
https://slproweb.com/products/Win32OpenSSL.html
下载完毕后,执行openssl进入交互式界面:
使用命令生成privatekey.pem 1024意思是1024位长度。
openssl genrsa -out privatekey.pem 1024
生成的privatekey.pem,打开看一看长啥样:
什么是pem文件?
.pem - Defined in RFCs 1421 through 1424, this is a container format that may include just the public certificate (such as with Apache installs, and CA certificate files /etc/ssl/certs), or may include an entire certificate chain including public key, private key, and root certificates. Confusingly, it may also encode a CSR (e.g. as used here) as the PKCS10 format can be translated into PEM. The name is from Privacy Enhanced Mail (PEM), a failed method for secure email but the container format it used lives on, and is a base64 translation of the x509 ASN.1 keys.
简单的说,就是一个密钥文件。
第二步,基于第一步生成的密钥文件生成一个证书请求:
openssl req -new -key privatekey.pem -out certrequest.csr
如果懒得维护证书明细,直接敲回车,会自动填入默认值:
最后基于第一步生成的密钥和证书请求生成一个数字证书:当然颁发机构就是自己了,仅用于测试目的。
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
至此我们有了privatekey.pem和Certificate.pem两个证书了。
下面是我https服务器的代码,很简单,只有50几行:
var app = require('express')();
var fs = require('fs');
var https = require('https');
var httpOptions = {
key: fs.readFileSync("keys/privatekey.pem"),
cert: fs.readFileSync("keys/certificate.pem")
}
var server = https.createServer(httpOptions, app);
var io = require('socket.io')(server);
console.log("https server listens on port 8080...");
server.listen(8080);
function print_env(){
console.log(process.env);
}
app.get('/', function (req, res) {
var response = "Hello World";
res.send(response);
});
app.get('/env', function (req, res) {
print_env();
// res.sendFile(__dirname + '/index.html');
var response = JSON.stringify(process.env);
res.send(response);
});
app.get('/redis', function (req, res) {
var redisClient = require("./redisClient");
function callback(response){
// var response = "ok";//JSON.stringify(process.env);
res.send(response);
}
redisClient.test(callback);
});
io.on('connection', function (socket) {
console.log("connect comming from client: " + socket.id);
socket.emit('messages_jerry', { hello: 'world greeting from Server!' });
socket.on('messages', function (data) {
console.log("data received from Client:" + JSON.stringify(data,2,2));
});
});
从代码里不难理解这两个pem文件是如何用在https服务器里的。
最后在浏览器里测试。因为是自己颁发的证书,没有经过CA验证,所以浏览器会显示一个警告。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
其次,curl是一个用于传输数据的命令行工具,支持多种协议,包括HTTPS。虽然curl主要用于数据传输,但它也可以用于提取服务器的证书信息: 1. 使用以下命令,同样替换`example.com`: ``` curl -s --head --ca...
在网络安全中,OpenSSL 是一个强大的安全套接层 (SSL) 工具包,它包含了各种用于处理加密通信所需的工具,包括生成证书、密钥以及执行加密操作。本文将详细介绍如何使用 OpenSSL 创建和管理CA证书、服务器证书和...
这几天csdn上也下载了好几个库,不是架构不全就是不支持https,下载资源里说明也不清楚,期间浪费我不少积分,这方便的资源传的人很少,即使传的话基本也不支持https,只好自己编译。生成的openssl库文件已经放到各...
在Windows环境下,使用Curl和OpenSSL访问HTTPS网站是一个常见的任务,特别是在开发涉及网络通信的C++应用程序时。本文将详细介绍如何在Windows下利用Curl和OpenSSL库实现HTTPS访问,并提供一个实例来帮助理解这一...
编译完成后,你会得到一个包含Poco库和OpenSSL支持的静态或动态库文件。将这些库文件链接到你的C++项目中,然后就可以使用Poco的`NetSSL`模块来创建HTTPS连接。例如,你可以创建一个`HTTPSClientSession`对象,设置...
总结来说,这个压缩包提供了一个预编译的、用于Windows 32位系统的、静态链接的libcurl库,它集成了openssl,支持HTTPS通信,并使用了Windows的SSPI和WinSSL,适用于那些希望在C/C++项目中方便、安全地处理HTTPS请求...
1. **生成自签名证书**:如果你想搭建一个测试服务器,可以使用openssl生成自签名证书。通过`openssl req`命令创建证书请求,然后用`openssl x509`签发证书。 2. **查看证书信息**:使用`openssl s_client`连接到...
这将生成一个名为`server.crt`的服务器端证书文件,该文件包含了服务器的公钥信息和证书签名信息。 五、tomcat配置 在tomcat中,我们需要配置SSL/TLS证书,以便启用HTTPS连接。首先,我们需要将服务器端证书和私钥...
通过安装这两个文件——Win64OpenSSL-1_1_1h.exe和Win64OpenSSL-1_1_1h.msi,用户能够在Windows平台上搭建一个支持SSL/TLS的环境,进而为Web服务器配置HTTPS服务。 1. **SSL/TLS协议**:SSL(Secure Sockets Layer...
OpenSSL 是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。 1. 获取百度服务器的证书 使用 OpenSSL 可以获取...
在IT行业中,Node.js是一个非常流行的JavaScript运行环境,它允许开发者在服务器端使用JavaScript编写代码。在许多场景下,为了确保数据传输的安全性,我们通常会使用HTTPS协议来构建服务。这篇博客“nodejs使用...
本代码使用MFC方式实现了如下功能: 1> 原生socket POST访问HTTP站点。... 2> 集成OpenSSL POST访问HTTPS站点。... 文件包内含有完整的,编译好的OpenSSL开发需要的头文件以及库文件等,可以方便的使用在您的项目中。
在IT行业中,OpenSSL是一个非常重要的工具,它主要用于加密通信,包括实现服务器和客户端之间的安全连接。这个主题涉及到网络通信的基础、SSL/TLS协议、证书管理以及编程接口等多个知识点。 首先,OpenSSL是一个...
window上使用openssl和libcurl发送https的post请求 并使用MD5和base64加密的工程,包含自己编译的openssl和libcurl静态库文件,可直接使用,详情可以看一下readme文件
libcurl 支持openssl协议 编译好的库和头文件以及openssl库文件。可以支持https地址的访问。备注:可能代码需要制定不验证ssl证书(curl_easy_setopt(easy_handle, CURLOPT_SSL_VERIFYPEER, 0L);)
OpenSSL是一个开源的库,包含了各种加密算法,它提供了生成SSL证书的功能。本教程将详细介绍如何使用OpenSSL在Windows环境下为Nginx服务器配置HTTPS服务,以及如何生成和管理SSL证书。 首先,了解SSL证书的作用。...
这只是一个基本的示例,实际应用中可能需要更复杂的设置,如加载服务器证书、处理SSL错误等。 为了调试或查看OpenSSL的日志,可以设置环境变量`OPENSSL_DEBUG_LOG`指向一个日志文件,OpenSSL将在运行时将调试信息...
在获取HTTPS服务端证书时,openssl可以用来执行命令行操作,如`openssl s_client`,该命令可以连接到一个HTTPS服务器并显示其证书信息。例如,你可以使用以下命令: ``` openssl s_client -connect example.com:443...
openssl是一个功能强大的工具,它可以用来生成证书、加密和解密数据等。文章中使用了openssl生成根密钥、根证书、私钥和服务器证书。 知识点二:根证书的生成 根证书是证书链的起点,它是自签发证书的基础。文章中...