신뢰할 수 있는 인증서와 lnrpc 사용 시도
8888 단어 lnrpc
묘사
btc pay 서버와 함께 사용할 수 있도록 gm를 조정하려고 시도하고 있으며, 이 서버는 신뢰할 수 있는 인증서를 사용합니다.GRPC::Core::ChannelCredentials.new(self.credentials)
를 GRPC::Core::ChannelCredentials.new
로 변경Nicolas Dorier가 Alex Bosworth의 ln 서비스에서 사용하는 모드를 따르십시오.https://github.com/alexbosworth/ln-service/pull/71
이 오류를 계속 검색하려면 다음과 같이 하십시오.
rails가 중지되었습니다!
GRPC::알 수 없음: 2: 그룹 해제 v1: 패킷 크기가 너무 큽니다.
왜 그리고 우리가 이 기능을 lnrpc에 추가할 수 있는지 알고 싶습니까?만약 내가 그것을 내 기계에서 정상적으로 작동시키고 PR
토론 #1
을 만들 수 있다면 이것은 매우 좋은 관점이다.나는 아직 조사한 적이 없다.현재 신뢰할 수 있는 인증서 뒤에 있는 lnd가 없습니다.실제로 파라미터/nil 없이 초기화
GRPC::Core::ChannelCredentials
는 환경/서버에서 루트 인증서를 불러올 수 있습니다.너는 너의 잘못의 모든 흔적을 가지고 있니?
토론 #2
전체 추적:/Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/active_call.rb:31:in `check_status': 2:unmarshal v1: packet size too big (GRPC::Unknown)
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/active_call.rb:181:in `attach_status_results_and_complete_call'
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/active_call.rb:377:in `request_response'
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/client_stub.rb:178:in `block in request_response'
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/interceptors.rb:181:in `block in intercept!'
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/lnrpc-0.5.2/lib/lnrpc/macaroon_interceptor.rb:13:in `inject_macaroon_metadata'
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/interceptors.rb:175:in `intercept!'
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/client_stub.rb:177:in `request_response'
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/service.rb:170:in `block (3 levels) in rpc_stub_class'
from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/lnrpc-0.5.2/lib/lnrpc/client.rb:60:in `method_missing'
from rpc.rb:6:in `<main>'
토론 #셋
응, 이상해...당신의 코드는 도대체 어떤 모양입니까?토론 #4
require 'lnrpc'
macaroon = "[my macaroon here]".each_byte.map { |b| b.to_s(16).rjust(2,'0') }.join
lnd = Lnrpc::Client.new({macaroon: macaroon, channel: 'btcpay399208.lndyn.com:443'})
lnd.get_info
gem를 조정하여 다음을 수행합니다.self.address = options[:address] || DEFAULT_ADDRESS
self.credentials = options[:credentials_path] ? ::File.read(::File.expand_path(options[:credentials_path] || DEFAULT_CREDENTIALS_PATH)) : options[:credentials]
options[:macaroon] ||= begin
macaroon_binary = ::File.read(::File.expand_path(options[:macaroon_path] || DEFAULT_MACAROON_PATH))
macaroon_binary.unpack("H*")
end
self.macaroon = options[:macaroon]
channelcredentials = self.credentials ? GRPC::Core::ChannelCredentials.new(self.credentials) : GRPC::Core::ChannelCredentials.new
self.grpc_client = Lnrpc::Lightning::Stub.new(self.address,
channelcredentials,
interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
)
토론 #5
네,"[my macaroon here]"
아몬드 케이크 파일에서 불러온 거예요?(이진법?)나는 옵션에서 주소는
address
가 아니라 channel
라고 생각한다.lnd = Lnrpc::Client.new({macaroon: macaroon, address: 'btcpay399208.lndyn.com:443'})
토론 #6
당신의 lnd 노드는 정말 이 주소와 포트를 통해 접근할 수 있습니까?토론 #7
채널 오류 형식을 잘 포착했습니다. (다행히도 기본 주소 상수를 btcpay399208.lndyn.com:443로 설정했습니다.)macaroon은 lnd의 실제 관리 macaroon입니다. 이것은 문자열입니다. (단지 이 때 시작하고 실행하려고 시도할 뿐입니다.)
이 포트를 통해 노드에 접근할 수 있을 것입니다.이 노드는 lunanode 가상 시스템에서 실행되는 BTC 결제 서버입니다.BTC Pay Server는 이 엔드포인트에서 LND grpc 서비스를 공개합니다.
토론 #8
유감스럽게도 btc 요금제 서버를 몰라요. 어떻게 btcpay 서버에서 아몬드 케이크를 얻었어요?만약 그것이 이미 16진수 값이라면, 당신은.each_byte.map { |b| b.to_s(16).rjust(2,'0') }.join
토론 #9
를 필요로 하지 않습니다. 이것이 문제입니다.감사합니다!공공 관계의 측면:
자격 증명 및 자격 증명 경로가 없는 경우 기본 자격 증명 경로가 아닌 신뢰할 수 있는 인증서로 가정할 수 있습니다.
def initialize(options={})
self.address = options[:address] || DEFAULT_ADDRESS
self.credentials = options[:credentials_path] ? ::File.read(::File.expand_path(options[:credentials_path])) : options[:credentials]
options[:macaroon] ||= begin
macaroon_binary = ::File.read(::File.expand_path(options[:macaroon_path] || DEFAULT_MACAROON_PATH))
macaroon_binary.unpack("H*")
end
self.macaroon = options[:macaroon]
channel_credentials = self.credentials ? GRPC::Core::ChannelCredentials.new(self.credentials) : GRPC::Core::ChannelCredentials.new
self.grpc_client = Lnrpc::Lightning::Stub.new(self.address,
channel_credentials,
interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
)
end
또는 이 경우 기본\u 자격 증명\u 경로를 계속 사용하고 사용자가 다른 매개변수(trusted\u certificated:true)로 보내도록 합니다.def initialize(options={})
self.address = options[:address] || DEFAULT_ADDRESS
options[:credentials] ||= ::File.read(::File.expand_path(options[:credentials_path] || DEFAULT_CREDENTIALS_PATH))
self.credentials = options[:credentials]
options[:macaroon] ||= begin
macaroon_binary = ::File.read(::File.expand_path(options[:macaroon_path] || DEFAULT_MACAROON_PATH))
macaroon_binary.unpack("H*")
end
self.macaroon = options[:macaroon]
channel_credentials = options[:trusted_certification] ? GRPC::Core::ChannelCredentials.new : GRPC::Core::ChannelCredentials.new(self.credentials)
self.grpc_client = Lnrpc::Lightning::Stub.new(self.address,
channel_credentials,
interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
)
end
토론 #10
예, 대단합니다!이 소식을 들으니 매우 기쁘다.나는 단지 이런 실험을 하고 있을 뿐이다.
def initialize(options={})
self.address = options[:address] || DEFAULT_ADDRESS
unless options.has_key?(:credentials)
options[:credentials] = ::File.read(::File.expand_path(options[:credentials_path] || DEFAULT_CREDENTIALS_PATH))
end
self.credentials = options[:credentials]
unless options.has_key?(:macaroon)
options[:macaroon] = ::File.read(::File.expand_path(options[:macaroon_path] || DEFAULT_MACAROON_PATH)).unpack("H*")
end
self.macaroon = options[:macaroon]
self.grpc_client = Lnrpc::Lightning::Stub.new(self.address,
GRPC::Core::ChannelCredentials.new(self.credentials),
interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
)
end
그래서 이렇게 사용할 수 있다.lnd = Lnrpc::Client.new({credentials: nil, macaroon: macaroon, address: 'btcpay399208.lndyn.com:443'})
즉, nil
가 자격 증명으로 전달되면 기본값/신뢰할 수 있는 시스템 인증서를 사용합니까?당신은 어떻게 생각합니까?
토론 #11
좋아!토론 #12
테스트하고 싶으면 내가 방금 branchPR#5를 밀었어.만약 당신에게 효과가 있다면 저에게 알려 주세요.아직 테스트 단계이니, 나는 그것을 위해 규범을 좀 써야 한다.
토론 #13
효과가 좋아요!토론 #14
네,너무 좋아요!!왜냐하면 나는 어떤 btc비용 지불 서버도 실행하고 있지 않기 때문이다...자술한 파일, 문서 폴더, 위키백과에 부분을 추가하시겠습니까? 어떻게 연결하시겠습니까?이것은 다른 사람들에게 매우 도움이 될 것이다.네, 그럴게요!
Reference
이 문제에 관하여(신뢰할 수 있는 인증서와 lnrpc 사용 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/bumi/lnrpc/issues/3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)