fishfree
(Fishfree)
1
@david David,您能与我分享一个配置实例吗?我尝试多次将 Discourse 与 Moodle 3.10 集成,但仍未成功。始终提示:
OpenSSL::PKey::RSAError (Neither PUB key nor PRIV key: nested asn1 error)
lib/middleware/omniauth_bypass_middleware.rb:50:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:355:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:187:in `call'
david
(David Taylor)
2
您在“平台公钥”设置中输入了什么?如果我的记忆没错,Moodle 默认提供一个 JWKS URL,而此插件尚不支持该功能。
应该可以在某处找到原始证书,您可以将其复制并粘贴到 Discourse 中。
fishfree
(Fishfree)
3
@david 感谢您的回复。是的,在 Moodle 中显示 Public keyset URL: https://mysiet.com/mod/lti/certs.php。
我在浏览器中打开此 URL,显示如下:
{
"keys": [
{
"kty": "RSA",
"alg": "RS256",
"kid": "1371e22ce81f1dbb936a",
"e": "AQAB",
"n": "xXOfRS1UronVdVUEal0jyIhyNkAcbCRb6K2uzLsoQgRAaqA2ixbshCTWW_Yj-ZoJgg7UoruO65TB5EIldMyPJbYjYoMF0rB5a-wcvEhtWxfLs8FsDNLM9czjYXZUXBJ6sxIGNp-9Wp4c6PaecvXDfc4bJoHU8Ee5WzUk2XuX8dXX4jx8ipwzRa8qaQT-0cIPnZw4LmkPiTgn-gA-LuqjG2w9awwjnWTuZbTNPTphgPO9FD4lD_dAY3biURU_lEyJXflqFYwbrpja-b8y23qixwiHEYsM3_2F5D-DrI3Nsty219-ALDmJ0wY1hnr4p2NfwYZr_d2YjpIiJW_8iW3SRQ",
"use": "sig"
}
]
}
我将 JSON 中“n”的值(最长的那个)复制到 Discourse 中。但错误依旧。
david
(David Taylor)
4
我认为仅复制 n 值是不够的——Discourse 需要 PEM 格式的密钥。从长远来看,我们或许可以添加对 JWK 的支持,但在短期内,您应该可以通过转换密钥来使其正常工作。
有一些在线工具可以将 JWK 格式转换为 PEM 格式。这里有一个。(显然,我无法保证这些在线工具的安全性,因此请确保仅向其中粘贴公开信息)
一旦您获得了 PEM 格式(以 -----BEGIN PUBLIC KEY----- 开头),Discourse 就应该能够接受它。