One method is to use LegendMarkers
and draw a frame using an empty Rectangle
:
SwatchLegend[{Red, Green, Blue}, {"label1", "label2", "label3"},
LegendFunction -> "Frame", LegendMarkerSize -> 30,
LegendMarkers ->
Graphics[{Rectangle[], FaceForm[], EdgeForm[Opacity[1]], Rectangle[{-1/2, -1/2}, {3/2, 3/2}]}]]

Another is to use LegendFunction
to operate on the contents of the legend, here with MapAt
and a rather unwieldy position specification:
SwatchLegend[{Red, Green, Blue}, {"label1", "label2", "label3"},
LegendFunction -> MapAt[Framed, {1, 1, 1, 1, 1, 1, 1, All, 1}]]

From a comment below you may want EdgeForm
rather than a separate frame element:
SwatchLegend[{Red, Green, Blue}, {"label1", "label2", "label3"},
LegendFunction -> "Frame", LegendMarkerSize -> 20,
LegendMarkers -> Graphics[{EdgeForm[{Thick, Black, Opacity[1]}], Rectangle[]}]]
