配置GraphQL的https服务,需要如下流程:
- 生成SSL证书
- 配置GraphQL的https
- 生成ssl证书
- 解压openssl-0.9.8k_WIN32
(\\10.86.68.10\sharefolder\GraphQL工程\ openssl-0.9.8k_WIN32.zip)
-
- bin目录下启动CMD窗口
- 执行openssl.exe,进入OPENSSL运行界面
- 生成一个RSA私钥
命令行:genrsa -des3 -out server.key 2048
des3算法,2048位强度,server.key是秘钥文件名,
注意:此时需要提供一个至少4位的密码(如bitpower)
- 生成CSR(证书签名请求)——自签名(内部或测试需求)
命令行:req -new -key server.key -out server.csr
说明:需输入国家、地区、城市、组织、组织单位、Common Name和Email。
其中Common Name要支持https,Common Name应与域 名保持一致,否则会引起浏览器警告
样例:国家:CN、省州:GuangDong、城市:ShenZhen
组织名称:Bitpower、组织单位名称:IT
Common Name:localhost、
邮箱:2384434708 @qq.com
- 删除私钥中的密码
创建私钥指定密码后,每次Apache启动Web服务器时,都会要求输入密码。
要删除私钥中的密码,操作如下:rsa -in server.key -out server_no_passwd.key,此时需要输入创建私钥时输入的密码
- 生成自签名证书
说明:使用自签名临时证书时,浏览器会提示证书的颁发机构是未知的。
命令:x509 -req -days 365 -in server.csr -signkey server_no_passwd.key -out server.crt
server.crt就是SSL证书
-
- GraphQL配置Https
- 将上述操作生成的SSL证书文件拷贝到GrpahQL工程下,建立keys目录,文件放进去
server_no_passwd.key
server.crt
- 替换main.js文件即可
这个代码http和https都支持,只支持https的话,注释app.listen代码即可。
var express = require('express');
var graphqlHTTP = require('express-graphql');
var appdll = require('./app/dll')
var Schemetype = require('./app/Schemetype');
var QueryResolve = require('./app/QueryResolve');
//1. 导入https木模块
var https = require('https');
var fs = require('fs');
//2. 读入密钥和证书文件,构造https服务器选项
var options = {
key:fs.readFileSync('./keys/server_no_passwd.key'),
cert:fs.readFileSync('./keys/server.crt')
}
appdll.init()
var app = express();
//3.创建https服务器
var httpsServer = https.createServer(options,app);
//解决本机部署,客户端需要上网的问题
app.use(express.static('public'));
app.use('/graphql', graphqlHTTP({
schema: Schemetype.schema,
rootValue: QueryResolve.root,
graphiql: true,
}));
//4.监听https端口
httpsServer.listen(8088);
console.log('Running Https a GraphQL API server at localhost:8088/graphql');
//监听http接口
app.listen(8089);
console.log('Running Http a GraphQL API server at localhost:8089/graphql');
-
- Postman测试接口
参考: https://www.cnblogs.com/xuange306/p/postman.html
参考 https://blog.51cto.com/11883699/2160032
佳斌申请点宽的CA证书,阿里云的1年免费。
Windows系统下创建自签名ssl证书
https://blog.csdn.net/huplion/article/details/52892869
node.js express 启用 https
https://www.cnblogs.com/whm-blog/p/9413958.html
HTTPS原理和CA证书申请
https://blog.51cto.com/11883699/2160032