我已经开始为API编写一个包装器,它要求所有请求都通过HTTPS.我在开发和测试时不是向实际的API发出请求,而是想在本地运行我自己的服务器来模拟响应.
我很困惑如何生成我需要创建HTTPS服务器并向其发送请求的证书.
我的服务器看起来像这样:
var options = {
key: fs.readFileSync('./key.pem'),
cert: fs.readFileSync('./cert.pem')
};
https.createServer(options, function(req, res) {
res.writeHead(200);
res.end('OK\n');
}).listen(8000);
Run Code Online (Sandbox Code Playgroud)
pem文件生成为:
openssl genrsa 1024 > key.pem
openssl req -x509 -new -key key.pem > cert.pem
Run Code Online (Sandbox Code Playgroud)
请求看起来像这样:
var options = {
host: 'localhost',
port: 8000,
path: '/api/v1/test'
};
https.request(options, function(res) {
res.pipe(process.stdout);
}).end();
Run Code Online (Sandbox Code Playgroud)
有了这个设置,我想Error: DEPTH_ZERO_SELF_SIGNED_CERT,我想我需要ca为请求添加一个选项.
所以我的问题是我应该如何生成以下内容:
key?cert?ca为请求?我已经阅读了一些关于使用openssl生成自签名证书的事情,但似乎无法绕过它并找出在我的节点代码中使用哪些密钥和证书.
更新
API提供要使用的CA证书而不是默认值.以下代码使用他们的证书,这是我想在本地重现.
var ca = fs.readFileSync('./certificate.pem');
var options = {
host: 'example.com',
path: …Run Code Online (Sandbox Code Playgroud) 使用官方mysql映像启用二进制日志记录的最佳方法是什么?
我尝试使用mysql:5.7映像,在运行该命令时覆盖该命令,使其也通过启动选项以启用对mysqld的二进制日志记录(请参见下文)。这种方法的问题是mysql用户没有写/var/log/mysql目录的权限。
运行命令:
docker run -d \
--name mysql \
-v /var/lib/mysql:/var/lib/mysql \
mysql:5.7 \
mysqld \
--datadir=/var/lib/mysql \
--user=mysql \
--server-id=1 \
--log-bin=/var/log/mysql/mysql-bin.log \
--binlog_do_db=test
Run Code Online (Sandbox Code Playgroud)
输出:
mysqld: File '/var/log/mysql/mysql-bin.index' not found (Errcode: 2 - No such file or directory)
Run Code Online (Sandbox Code Playgroud)
我应该分叉存储库并添加一个供/var/log/mysqlmysql用户写入并创建自定义映像的卷,还是有更好的方法呢?仅使用官方的mysql镜像可能吗?
我有两个独立的Java应用程序,我需要使用spring-rabbit通过RabbitMQ发送消息.在作为生产者的应用程序中,我使用它JsonMessageConverter作为消息转换器,以便RabbitTemplate在将Java对象发送到队列之前将其转换为JSON消息.
在另一个应用程序中,我想将JSON消息转换回Java对象.我尝试使用SimpleMessageListenerContainer自定义MessageListener,我可以Message从队列中获取s,但我不知道将它们从JSON转换回Java对象.
JsonMessageConverter从RabbitMQ异步消费消息时如何使用?